sql >> Databáze >  >> RDS >> Mysql

Budování ternárního vztahu pomocí Laravel Eloquent Relationships

V zásadě budou vaše čtyři stoly něco jako:

zaměstnanec

  • id
  • ...vaše pole

projekt

  • id
  • ...vaše pole

zaměstnání

  • id
  • ...vaše pole

projekt_zaměstnance

  • id_employee
  • id_projektu
  • id_employment

Problém můžete rozdělit na vztahy 2:2:

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')
  }
}

Model projektu

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')
  }
}

Model zaměstnanosti

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

  public function projects(){
    return $this->belongsToMany("Project")
  }
}

V tomto okamžiku ve svém kontroléru můžete spravovat svůj vztah, například pokud chcete přidat k $employee, projekt s ID 1 se zaměstnáním s ID 2, můžete jednoduše

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

Doufám, že tato odpověď na vaši otázku.

Pokud potřebujete časová razítka v kontingenční tabulce, přidejte do svých vztahů ->withTimesetamps().



  1. Jak vybrat počet pomocí Laravelova plynulého tvůrce dotazů?

  2. Seskupit MySQL podle čísla týdne s více sloupci data

  3. Android + MySQL pomocí com.mysql.jdbc.Driver

  4. Seskupte pouze sousední řádky