Connectez le tableau croisé dynamique à une autre table dans Laravel
P粉073857911
P粉073857911 2024-03-27 10:16:01
0
1
383

J'ai une relation plusieurs-à-plusieurs avec la structure suivante :

|Table receipts       |
|- id                 |
|- code               |
|- date               |
-----------------------
|Table plans          |
|- id                 |
|- number             |
|- name               |
-----------------------
|Table plan_receipt   |(Pivot)  
|- id                 |
|- receipt_id         |
|- plan_id            |
|- employee_id        |
-----------------------
|Table employees      |
|- id                 |
|- name               |
-----------------------

Comme vous pouvez le voir, j'ai l'habitude many-to-many 关系,生成一个包含所述表的键的数据透视表,但我还有第三个 foreign key 引用另一个表 "employees",如何我可以将这张员工表与我的表关联起来吗?枢?除了使用 ->using()en dehors d'essayer de créer un modèle pour un tableau croisé dynamique et d'établir des relations, mais jusqu'à présent, cela n'a pas fonctionné pour moi, je vous laisse avec un exemple de mon modèle actuel.

class Receipt extends Model
{
    public function plans()
    {
        return $this->belongsToMany(Plan::class)->using(PlanReceipt::class);
    }
}

class Plan extends Model
{
    public function receipts()
    {
        return $this->belongsToMany(Receipt::class);
    }
}

class PlanReceipt extends Pivot
{
    protected $table = 'plan_receipt';

    public function employee()
    {
        return $this->belongsTo(Employee::class, 'employee_id');
    }
}

class Employee extends Model
{
    public function plan_receipt()
    {
        return $this->hasMany(PlanReceipt::class, 'id');
    }
}

P粉073857911
P粉073857911

répondre à tous(1)
P粉315680565

Je suppose que vous devez apporter les deux modifications suivantes

class Employee extends Model
{
    public function plan_receipt()
    {
        //Specifying foreign key is not required as it is as per Eloquent convention
        return $this->hasMany(PlanReceipt::class);

        //If you want to specify the keys then it should be
        // return $this->hasMany(PlanReceipt::class, 'employee_id', 'id');
    }
}
class PlanReceipt extends Pivot
{
    protected $table = 'plan_receipt';

    //Assuming the id column on plan_receipt table is auto incrementing 
    public $incrementing = true; 

    public function employee()
    {
        //return $this->belongsTo(Employee::class, 'employee_id');

        //Specifying foreign key is not required as it is already as per Laravel Eloquent convention
        return $this->belongsTo(Employee::class);
    }
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal