在Kohana中导航两个模型之间的关系执行搜索



假设我有两个模型user和location。模型之间有一个定义的关系,允许我这样做:

$user->location->name;

我不知道这是否可能,但我可以执行搜索使用类似:

$user->location->where('name', '=', 'Paris')->find();

返回给我它的位置命名为Paris的用户?

总之可以。以下是原因。

当您调用find方法时,ORM将遍历要添加到查询中的所有挂起属性,添加它们并执行查询。在您的示例中,有两个待挂起的规则要添加到查询中。第一个你明确定义的是where('name', '=', 'Paris'),第二个隐藏在关系$user->location中。

当你从一个关系中调用一个ORM属性时,它实际上返回一个在关系中定义的ORM对象,这个对象没有加载,但是在它的对象中有一个挂起的where子句和一个join。因此,当您最终调用find方法时,您将在具有两个where子句和一个join的位置对象上调用它。

最新更新