2015-05-28 20 views
6

olan birçok Polimorfik İlişkisi Birçok? tablolar (bir polimorfik ilişki olduğu için, ya da daha fazla)laravel - Ben ekstra alanlarla birçok polimorfik ilişki için birçok tanımlayabilirsiniz nasıl Ekstra Fields

Üç tane vardır.

posts table: id, record, timestamps

sütun kimliği kullanıcıların tabloya etiketli tablo referes üzerinde

users table: id, name, email

user_id

tagged table: id, tag_id, taggable_id, taggable_type, user_id

tags table: id, name

.

public function tags() 
{ 
    return $this->morphToMany('App\Tag', 'taggable','tagged'); 
} 

ve benim Etiket modelinde Ben: Benim Mesaj modelinde Ben

public function posts() 
{ 
    return $this->morphedByMany('App\Post', 'taggable','tagged'); 
} 

Sonra benim denetleyicisi bu deneyin olduğumda:

$tag = new \App\Tag(
array(
    'tag'=>"someTag" 
)); 
$tag->save() 
$post = \App\Post::find($id); 
$post->tags()->save($tag); 

Ben Dürüstlük olsun

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (hb . tagged , CONSTRAINT tagged_user_id_foreign FOREIGN KEY (user_id) REFERENCES users (id)) (SQL: insert into tagged (tag_id , taggable_id , taggable_type) values (26, 2, App\Resource)). Which is somewhat expected, as I have never had the chance to define or declare the user_id field.

: bir user_id olmaması için kısıtlama ihlali aşağıdaki gibi

Ayrıca, boşuna, etiket ilişkiye withPivot() denedim:

public function tags() 
{ 
    return $this->morphToMany('App\Tag', 'taggable','tagged')->withPivot('user_id'); 
} 
+0

sen denediniz mi? –

+0

Pivot() ile çalıştı? Sorun şu ki özniteliği nasıl atayabilirim. I withPivot ('user_id') güvenilir ve aynı zamanda oluşturmak yönteme user_id içeren bir dizi geçiş zaman yine bir bütünlüğünü kısıtlama hata olsun. User_id öğesini kendi sorgusuna yerleştirmez. – CrackingTheCode

+0

'creating' withPivot'' ilgisi oldukça fazla ilgisi yoktur. Bu yüzden, gönderdiğiniz soru yerine (bu http://xyproblem.info/ adresini okuyun) ne yapmaya çalıştığınızı, ne beklediğinizi ve ne aldığınızı gösterin. –

cevap

5

yorumunda gibi: withPivotsaving/creating ile ilgisi yoktur. Ek Özet verileri saving geçmek istiyorsanız, bunu yapmak:

$post->tags()->save($tag, ['user_id' => $userId]); 
İlgili konular