2011-12-20 1 views
1

두 가지 모델의 사용자 및 위치가 있다고 가정 해 봅시다. 내가이 작업을 수행 할 수있는 모델 간의 정의 관계가있다 :Kohana의 두 모델 사이의 관계를 탐색하는 검색 수행

$user->location->name; 

이 가능하다면 나도 몰라하지만 같은 것을 사용하여 검색을 수행 할 수 있습니다 : 저를 반환

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

을 해당 위치의 이름이 Paris 인 사용자?

+0

네, 할 수 있습니다 ... –

답변

2

요약하면됩니다. 여기에 이유가 있습니다.

find 메서드를 호출하면 ORM은 보류중인 모든 속성을 쿼리에 추가하여 추가 한 다음 쿼리를 실행합니다. 귀하의 예제에서 두 개의 보류중인 규칙을 쿼리에 추가 할 수 있습니다. 첫 번째 정의는 분명히 - where('name', '=', 'Paris')이고, 두 번째 것은 $user->location 관계에 숨겨져 있습니다.

관계에서 ORM 속성을 호출하면로드되지 않은 관계에 정의되어 있지만 보류중인 where 절과 해당 개체에 join이있는 ORM 개체가 실제로 반환됩니다. 따라서 결국 find 메서드를 호출하면 두 개의 where 절과 join이있는 위치 개체에서 호출합니다.

관련 문제