问题
我正在使用Laravel创建API。每个服务器都可以有多个联系人,每个联系人都属于一个服务器 - 因此,联系人设置为belongsTo
关系,服务器与联系人之间的关系为hasMany
。
用户可以通过hasMany
关系拥有多台服务器。因此,在创建服务器时,我们只需调用$user->server()->create([values])
,它就可以正常工作。
问题在于,当我们尝试进一步调用它时,就像联系人一样 - 我们碰到了一堵墙:
Call to undefined method Illuminate\Database\Query\Builder::contacts()
使用时:$user->server()->contacts()->create([])
。
方法存在于服务器模型中。 我们在用户模型上也有一个hasManyThrough关系,指定用户通过服务器有很多联系人。
在致电$user->contact()->create([])
时,我们改为:
Call to undefined method Illuminate\Database\Query\Builder::create()
有没有人知道可能导致这种情况的原因?查询构建器不允许这种类型的链接,还是我错过了一些明显的东西?正如您所看到的,我尝试了一些不同的方法,但似乎无法产生效果。
干杯!
答案 0 :(得分:0)
正如你所说:
用户可以通过hasMany关系拥有多台服务器。
所以你不能在关系上建立另一个可以返回很多结果的关系(因为最后我们并不知道我们应该在联系新记录时设置哪个服务器ID)。
所以你能做的就是完成:
foreach ($user->server as $server) {
$server->contacts()->create($values);
}
您会看到:现在您已将具有ID的特定服务器放入新的联系人记录中。