sql >> Database >  >> RDS >> Mysql

Een ternaire relatie opbouwen met behulp van Laravel Eloquent Relationships

In principe zullen uw vier tabellen er ongeveer zo uitzien:

werknemer

  • id
  • ...uw velden

project

  • id
  • ...uw velden

werkgelegenheid

  • id
  • ...uw velden

employee_project

  • employee_id
  • project_id
  • employment_id

Je kunt het probleem in 2 bij 2 relaties splitsen:

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

Een projectmodel

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

Een werkgelegenheidsmodel

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

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

Op dit punt in uw controller kunt u uw relatie beheren, bijvoorbeeld als u aan $employee het project met id 1 wilt toevoegen met het dienstverband met id 2 kunt u eenvoudig

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

Ik hoop dat dit antwoord op uw vraag.

Als u tijdstempels in uw draaitabel nodig heeft, voegt u ->withTimesetamps() toe aan uw relaties.



  1. Cassandra v3 installeren op CentOS 6

  2. fulltext zoeken geeft totaal aantal niet terug

  3. JSON-array lezen in MYSQL

  4. MuleSoft omarmt GraphQL om API-integratie te bevorderen