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


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)