2017-10-17 10 views
0

Je suis en train d'utiliser un modèle pivot personnalisé comme:Laravel personnalisé Pivot Modèle manque champs

class A extends Model{ 
    public function b() 
    { 
     return $this->belongsToMany(B::class) 
      ->using(PivotAB::class); 
    } 

class PivotAB extends Pivot{} 

Lorsque vous accédez à PivotAB par la relation le champ supplémentaire du tableau croisé dynamique est manquant (sortie de artisan tinker):

>>>$q = A::all(); 
=> Illuminate\Database\Eloquent\Collection {#1385 
    all: [ 
     App\Models\A {#1386 
     id: 1    
     }, 
    ], 
    } 
>>> $q[0]->b[0]->pivot; 
=> App\Models\PivotAB {#1389 
    a_id: 1, 
    b_id: 1, 
    } 
>>> $q[0]->b[0]->pivot->custom_field; 
=> null 

Mais quand je questionne le modèle de pivot directement le champ se peuplé:

>>> PivotAB::all();  
=> Illuminate\Database\Eloquent\Collection {#1382 
    all: [ 
     App\Models\PivotAB{#281 
     a_id: 1, 
     b_id: 1, 
     custom_field: "abc", 
     }, 
    ], 
    } 

Qu'est-ce qu'il me manque? Ai-je besoin de déclarer les champs de pivot quelque part?

Répondre

0

J'ai dû ajouter tous les champs à la relation avec ->withPivot('custom_field'), donc ils sont peuplés lors de l'interrogation par la relation sur A.

D'une certaine façon, je compris le Laravel Docs soit avoir à utiliser ->withPivot(...) ou ->using(...), mais en réalité vous besoin d'inclure les deux.