我有一个与另一个对象有一对多关系的对象,
客户n:1项目
项目客户可以有很多用户
客户端n:n用户(client_user的数据透视表)
一个项目可以有很多用户
项目n:n用户(project_user的数据透视表)
我的代码中有项目模型,我可以在项目用户上运行同步,
$project->viewers()->sync($syncArray)
之后我还想将用户同步到客户端,我正在尝试这样做,我这样做,
$project->clients()->viewers()->sync($syncArray)
但它抱怨它无法找到观众,是否有办法从关系中同步关系,还是我需要查询数据库才能首先获得该特定客户?
答案 0 :(得分:0)
我不确定您是否可以轻松地建立关系链接。 - > clients()作为HasMany类返回,在查询之前,它们还不知道它与用户的关系。首先尝试抓住客户端然后循环它们以进行同步,例如:
foreach($project->clients as $client)
{
$client->viewers()->sync($syncArray);
}
// or
$project->clients->each(function($client) use ($syncArray)
{
$client->viewers()->sync($syncArray);
});
编辑:您也可以尝试使用hasManyThrough关系
class Project {
public function viewers()
{
return $this->hasManyThrough('App\User', 'App\Client');
}
}
$project->viewers()->sync($syncArray);