Laravel Eloquent - 群众协会

时间:2014-09-22 20:35:41

标签: laravel laravel-4 eloquent

我有一个表avail_requests,它有两个外键avail_iduser_id。可用性已创建。然后,将该可用性的请求发送给系统中的每个用户。假设我有10个用户,因此在发送请求后,表avail_requests应该有10行,其中avail_id的所有内容都相同,而user_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();
}

是否有更简单的方法不涉及循环?

1 个答案:

答案 0 :(得分:1)

由于avail_requests是将usersavailabilites相关联的数据透视表,因此您可以利用belongsToMany关系。

所以创建这种关系:

// 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