sql >> Database teknologi >  >> RDS >> Mysql

Opbygning af ternære forhold ved hjælp af Laravel Eloquent Relationships

Grundlæggende vil dine fire borde være noget som:

medarbejder

  • id
  • ...dine felter

projekt

  • id
  • ...dine felter

beskæftigelser

  • id
  • ...dine felter

medarbejder_projekt

  • employee_id
  • projekt_id
  • employment_id

Du kan opdele problemet i 2 gange 2 relationer:

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

En projektmodel

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

En beskæftigelsesmodel

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

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

På dette tidspunkt i din controller kan du administrere din relation, for eksempel hvis du vil tilføje til $employee, projektet med id 1 med ansættelsen med id 2 kan du ganske enkelt

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

Jeg håber, at dette svar på dit spørgsmål.

Hvis du har brug for tidsstempler i din pivottabel, skal du tilføje ->withTimesetamps() til dine relationer.



  1. hvordan man gemmer accentmærker over tegn i min database

  2. Hvordan vælger du en kolonne ved hjælp af Hibernate?

  3. SQL Server - Sådan låser du en tabel, indtil en lagret procedure afsluttes

  4. Kan ikke få vist de rigtige tegn fra databasen