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

Orm 在Kohana中导航两个模型之间的关系时执行搜索,orm,model,kohana,relationship,Orm,Model,Kohana,Relationship,假设我有两个模型用户和位置。模型之间有一个定义的关系,允许我这样做: $user->location->name; 我不知道是否可能,但我可以使用以下方式执行搜索: $user->location->where('name', '=', 'Paris')->find(); 这将返回其位置命名为Paris的用户?简而言之,您可以。这就是原因 当您调用find方法时,ORM将遍历所有要添加到查询中的挂起属性,添加它们并执行查询。在您的示例中,有两个挂起的规则要添加到

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

$user->location->name;
我不知道是否可能,但我可以使用以下方式执行搜索:

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

这将返回其位置命名为Paris的用户?

简而言之,您可以。这就是原因

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

从关系调用ORM属性时,它实际上返回关系中定义的ORM对象,该对象未加载,但在其对象中有一个挂起的
where
子句和一个
join
。因此,当您最后调用
find
方法时,您将使用两个
where
子句和一个
join
在location对象上调用它