2011-12-20 31 views
1

比方說,我有2個模型的用戶和位置。還有,讓我做這件事的模型之間的定義關係:執行搜索導航Kohana中的2個模型之間的關係

$user->location->name; 

我不知道這是否是可能的,但我可以執行使用類似搜索:

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

返回我其位置被命名爲巴黎的用戶?

+0

是的,你可以... – 2011-12-20 20:32:16

回答

2

總之你可以。這是爲什麼。

當您調用find方法時,ORM會遍歷所有待添加到查詢中的待處理屬性,並添加它們並執行查詢。在你的例子中,你有兩個未決的規則被添加到你的查詢中。您明確定義的第一個 - where('name', '=', 'Paris'),第二個隱藏在關係$user->location中。

當您從關係中調用ORM屬性時,它實際上會返回未加載關係中定義的ORM對象,但其對象中具有待處理的where子句和join。因此,當最後調用find方法時,您將在位置對象上調用它,其中有兩個where子句和一個join