sql >> データベース >  >> RDS >> Mysql

LaravelEloquentRelationshipsを使用して三項関係を構築する

    基本的に、4つのテーブルは次のようになります。

    従業員

    • id
    • ...あなたのフィールド

    プロジェクト

    • id
    • ...あなたのフィールド

    雇用

    • id
    • ...あなたのフィールド

    employee_project

    • employee_id
    • project_id
    • employee_id

    問題を2x2の関係に分割できます:

    class Employee extends Model{
      public function projects(){
        return $this->belongsToMany("Project")
      }
    
      // Second relation is Optional in this case
      public function employments(){
        return $this->belongsToMany("Employment", 'employee_project')
      }
    }
    

    プロジェクトモデル

    class Project extends Model{
      public function employees(){
        return $this->belongsToMany("Employee")
      }
    
      // Second relation is Optional in this case
      public function employments(){
        return $this->belongsToMany("Employment",'employee_project')
      }
    }
    

    雇用モデル

    class Employment extends Model{
      public function employees(){
        return $this->belongsToMany("Employee")
      }
    
      public function projects(){
        return $this->belongsToMany("Project")
      }
    }
    

    コントローラのこの時点で、関係を管理できます。たとえば、$ employeeに追加する場合は、ID1のプロジェクトとID2の雇用を簡単に追加できます

    $employee->projects()->attach([1 => ['employment_id' => '2']]);
    

    私はあなたの質問に対するこの答えを願っています。

    ピボットテーブルにタイムスタンプが必要な場合は、リレーションシップに-> withTimesetamps()を追加してください。



    1. OracleシステムがUnicodeまたはマルチバイト文字をサポートするように設定されているかどうかを確認するにはどうすればよいですか?

    2. MySQLアップデートケースヘルプ

    3. 2つの日時の差を計算する

    4. SUM(users_count)が1000に達するまで選択するSQLクエリ