Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
Laravel 拉拉维尔雄辩群众协会_Laravel_Laravel 4_Eloquent - Fatal编程技术网

Laravel 拉拉维尔雄辩群众协会

Laravel 拉拉维尔雄辩群众协会,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我有一个表avail\u requests,它有两个外键avail\u id和user\u id。创建可用性。然后向系统中的每个用户发送该可用性的请求。假设我有10个用户,那么在发送请求后,表avail\u requests应该有10行,它们的avail\u id都是相同的,user\u id就是10个用户id 我怎样才能直接与Laravel建立这种联系?显然,我可以循环访问所有用户,并按如下方式执行此操作: // Assuming $users contains the Collection

我有一个表
avail\u requests
,它有两个外键
avail\u id
user\u id
。创建可用性。然后向系统中的每个用户发送该可用性的请求。假设我有10个用户,那么在发送请求后,表
avail\u requests
应该有10行,它们的
avail\u id
都是相同的,
user\u id
就是10个用户id

我怎样才能直接与Laravel建立这种联系?显然,我可以循环访问所有用户,并按如下方式执行此操作:

// Assuming $users contains the Collection of all users
// Assuming $avail is the availability Collection
foreach ($users as $user)
{
    $request = new AvailRequest();
    $request->avail()->associate($avail);
    $request->user()->associate($user);
    $request->save();
}

有没有一种更简单的方法不涉及循环?

因为
avail\u requests
是一个数据透视表,将
用户
可用性
链接在一起,所以您可以利用
belongstomy
关系

因此,建立这种关系:

// I assume Availability is the model name
public function users()
{
  return $this->belongsToMany('User', 'avail_requests', 'avail_id', 'user_id');
}
然后,您可以调用
sync
为您执行此项工作:

$avail = Availability::find($someId);

$avail->users()->sync($usersIds, false); // 2nd param to false so it won't detach anything

其他解决方案可能是最简单的:

$ids; // array of availability and users ids

DB::table('avail_requests')->insert($ids); // runs single insert query

它是一个仅用于透视表的模型,还是您真的需要它(即,它也保存其他数据?)它也保存其他数据。它不仅仅是一个数据透视表,它与本例相关吗?或者这就是您想要执行的所有代码?因为除了外键,没有别的了。创建请求只是外键分配。当用户与请求交互时,这些行的默认列值会随之更改。因此,您可以在
用户
可用性
之间设置
归属
关系,然后调用
同步($ids,false)
-第二个参数以避免分离。请注意,它将在引擎盖下运行相同的循环。否则,对单个查询使用
DB::table(..)->insert(..)