很多很多关系没有同步laravel 4.2

时间:2015-09-04 16:07:25

标签: php laravel eloquent relational-database

我有一个与另一个对象有一对多关系的对象,

  

客户n:1项目

项目客户可以有很多用户

  

客户端n:n用户(client_user的数据透视表)

一个项目可以有很多用户

  

项目n:n用户(project_user的数据透视表)

我的代码中有项目模型,我可以在项目用户上运行同步,

$project->viewers()->sync($syncArray)

之后我还想将用户同步到客户端,我正在尝试这样做,我这样做,

$project->clients()->viewers()->sync($syncArray)但它抱怨它无法找到观众,是否有办法从关系中同步关系,还是我需要查询数据库才能首先获得该特定客户?

1 个答案:

答案 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);