Eloquent 在相关模型中插入多条记录
我在处理四张不同的桌子<代码>用户,Eloquent 在相关模型中插入多条记录,eloquent,laravel-5.1,Eloquent,Laravel 5.1,我在处理四张不同的桌子用户,活动,提要和朋友 friends是用户表中存在两个外键的表(user\u id和friends\u id) 活动是某些活动所在的表格 feeds是一个包含两个外键的表,即subscriber\u id(用户朋友的id)和activity\u id。当用户发布内容时,我想在feeds表中插入记录,他的朋友将看到他的状态更新。我希望到目前为止一切都很清楚。因此,如果一个用户有20个朋友,那么将有20个插入 当然,我可以做下面这样的事情,但那不是“拉威尔方式” 用户模型中的
活动
,提要
和朋友
friends
是用户表中存在两个外键的表(user\u id和friends\u id)
活动
是某些活动所在的表格
feeds
是一个包含两个外键的表,即subscriber\u id(用户朋友的id)和activity\u id。当用户发布内容时,我想在feeds表中插入记录,他的朋友将看到他的状态更新。我希望到目前为止一切都很清楚。因此,如果一个用户有20个朋友,那么将有20个插入
当然,我可以做下面这样的事情,但那不是“拉威尔方式”
用户模型中的朋友关系
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`)
失败,因为friends是一个集合,而您正试图将其分配给单个值
我不确定你为什么想要feeds表。您只需通过一些连接查询活动,就可以从某人的朋友那里获得活动列表
也就是说,据我所知,更新feeds表的唯一方法就是像第一个示例中那样循环所有的朋友。我不知道是什么让这不是“拉雷维尔方式”
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`)
$feed->subscriber_id = Auth::user()->friends