Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eloquent 在相关模型中插入多条记录_Eloquent_Laravel 5.1 - Fatal编程技术网

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