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 :(
Normalement sur les table pivot tu peux récupérer les infos via une clef "pivot" cf (https://laravel.com/docs/10.x/eloquent-relationships#retrieving-intermediate-table-columns)