les relations avec la table pivot

Par smamery95, il y a 2 ans


Décrivez ici votre problème ou ce que vous cherchez à faire.

salut et merci encore une fois pour votre aide. Je souhaite mettre ma table pivot en relation avec une autre table et que cette relation de 1:n mais je ne sais comment m'y prendre. Voici mes tables: le model employee <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Employee extends Model { use HasFactory; protected $dates=['birth_date']; protected $table ="employees"; protected $fillable = [ 'name', 'first_name', 'birth_date', 'birth_place', 'address', 'contact', 'state', 'society_id', 'registration_number', 'employee_photo', 'gender', 'marital_status', 'nationality_id' ]; public function roles() { return $this->belongsToMany(StaffRole::class,'employee_staff_roles','employee_id','staff_role_id')->withPivot('starting_date','driving_licence','id_card_copy','id_number','type_id_id')->withTimestamps(); } /* public function roles() { return $this->hasMany(EmployeeStaffRole::class)->with('role'); } public function nationality() { return $this->belongsTo(Nationality::class); } } le modele staffrole <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class StaffRole extends Model { use HasFactory; protected $fillable = []; protected $table="staff_roles"; public function Employees() { return $this->belongsToMany(Employee::class,'employee_staff_roles','staff_role_id','employee_id')->withPivot('starting_date','driving_licence','id_card_copy','id_number','type_id_id')->withTimestamps(); } } la table pivot <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class EmployeeStaffRole extends Model { use HasFactory; protected $dates=['starting_date']; protected $table='employee_staff_roles'; protected $fillable=[ 'staff_role_id', 'contract_type_id', 'starting_date', 'employee_id', 'driving_licence', 'id_card_copy', 'id_number', 'type_id_id' ]; /* public function employee() { return $this->belongsTo(Employee::class); } public function roles() { return $this->belongsTo(StaffRole::class); }*/ /*public function role() { return $this->belongsTo(StaffRole::class); } public function employee() { return $this->belongsTo(Employee::class); }*/ public function type_id() { return $this->belongsTo(TypeId::class); } public function contract_type() { return $this->belongsTo(ContractType::class); } } Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)

Ce que je veux

comme vous pouvez le voir la table pivot employeestaffrole faire une relation 1:n avec le model contract_type

moi je souhaite recuperer les donnees de la table lié au type_contract comme si je faisais une inner join

il faut dire que les donnees sont bien enregistrees dans une relation n:n entre employee et staffrole et s'affichent correctement mais où j'ai des problèmes d'arrivee à faire la relation avec type_contract .
veuiillez m'aidez ça fait plus d'une semaine que je m'exerce et que je ne vois pas encore.

Décrivez ce que vous cherchez à obtenir.

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

1 réponse