假设我有两个模型,用户和位置。模型之间有一个定义的关系,使我能够做到这一点:
$user->location->name;我不知道这是否可能,但我可以使用以下内容执行搜索:
$user->location->where('name', '=', 'Paris')->find();返回其位置名为Paris的用户?
发布于 2012-01-07 07:08:08
简而言之,你可以。这就是为什么。
当您调用find方法时,ORM将遍历要添加到查询中的所有挂起属性,添加它们并执行查询。在您的示例中,有两个待处理的规则要添加到查询中。您正在定义的第一个显然是where('name', '=', 'Paris'),第二个隐藏在relationship $user->location中。
当您从关系中调用ORM属性时,它实际上返回一个在关系中定义的ORM对象,该对象未加载,但其对象中有一个挂起的where子句和一个join。因此,当您最后调用find方法时,您是在使用两个where子句和一个join在location对象上调用它。
https://stackoverflow.com/questions/8576540
复制相似问题