Làm cách nào để xác định mối quan hệ đa hình nhiều với các trường bổ sung?Laravel - Nhiều đến nhiều quan hệ đa hình với các trường bổ sung
Tôi có ba (hoặc nhiều hơn, vì nó là một mối quan hệ đa hình) bảng.
tags table: id, name
tagged table: id, tag_id, taggable_id, taggable_type, user_id
posts table: id, record, timestamps
users table: id, name, email
Các user_id
trên referes bảng gắn thẻ vào bảng người dùng trên id cột. Trong mô hình bài viết của tôi, tôi có:
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable','tagged');
}
và trong mô hình Tag của tôi, tôi có:
public function posts()
{
return $this->morphedByMany('App\Post', 'taggable','tagged');
}
Sau đó, khi tôi thử điều này trong bộ điều khiển của tôi:
$tag = new \App\Tag(
array(
'tag'=>"someTag"
));
$tag->save()
$post = \App\Post::find($id);
$post->tags()->save($tag);
tôi nhận được toàn vẹn Vi phạm ràng buộc vì không có user_id:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
hb
.tagged
, CONSTRAINTtagged_user_id_foreign
FOREIGN KEY (user_id
) REFERENCESusers
(id
)) (SQL: insert intotagged
(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.
Ngoài ra, tôi đã cố gắng withPivot() trên mối quan hệ thẻ như sau, không có kết quả:
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable','tagged')->withPivot('user_id');
}
Bạn đã thử chưa? –
Đã thử vớiPivot()? Vấn đề là làm thế nào tôi có thể gán thuộc tính. Tôi đã thử vớiPivot ('user_id') và tôi vẫn nhận được một lỗi ràng buộc toàn vẹn khi tôi vượt qua một mảng mà cũng chứa user_id để tạo phương pháp. Nó không đặt user_id trong truy vấn của nó. – CrackingTheCode
'tạo' có khá nhiều thứ không liên quan đến' withPivot'. Vì vậy, thay vì câu hỏi mà bạn đã đăng (hãy đọc http://xyproblem.info/) này cho thấy những gì bạn đang cố gắng làm, những gì bạn mong đợi và những gì bạn nhận được để thay thế. –