0
我正在處理四個不同的表格。 users
,activity
,feeds
和friends
。Eloquent插入多個記錄到相關模型中
friends
是用戶表中存在兩個外鍵(user_id和friend_id)的表。
activity
是某些活動持有的表格。
feeds
是有兩個外鍵,subscriber_id(用戶的朋友的ID)和activity_id的表。當用戶發佈內容時,我想將記錄插入到Feed表中,以便他的朋友可以看到他的狀態更新。我希望迄今爲止很清楚。所以如果有20個用戶的朋友,將會有20個插入。
當然,我可以做下面的事情,但這不是「Laravel的方式」。
$friends = Auth::user()->friends;
foreach ($friends as $friend) {
$feed = new Feed;
$feed->subscriber_id = $friend->id;
$feed->activity_id = $status->id;
$feed->save();
}
用戶模型中的朋友關係。
public function friends() {
return $this->belongsToMany('App\Models\User', 'friends', 'user_id', 'friend_id');
}
插入控制器
$status = new Activity;
$status->user_id = Auth::user()->id;
$status->status = Request::input("text");
$status->activity_type_id = 1;
$result = $status->save(); // OK, status is saved now.
if($result) {
// insert data into feeds table
$feed = new Feed;
$feed->subscriber_id = Auth::user()->friends;
$feed->activity_id = $status->id;
$feed->save();
}
它提供了異常。
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`testdatabase`.`feeds`, CONSTRAINT `feeds_ibfk_1` FOREIGN KEY (`subscriber_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert into `feeds` (`subscriber_id`, `activity_id`, `updated_at`, `created_at`)