2011-12-20 3 views
1

Предположим, у меня есть 2 пользователя и местоположение модели. Существует определенная взаимосвязь между моделями, что позволяет мне сделать это:Выполните поиск, проводящий отношения между двумя моделями в Кохане

$user->location->name; 

Я не знаю, если это возможно, но я могу выполнить поиск, используя что-то вроде:

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

, который возвращает меня пользователей, что его местоположение называется Paris?

+0

Да, вы можете ... –

ответ

2

Вкратце вы можете. Вот почему.

Когда вы вызываете метод find, ORM проходит через все ожидающие свойства свойства, добавляемые в запрос, добавляет их и выполняет запрос. В вашем примере у вас есть два ожидающих правила, которые будут добавлены в ваш запрос. Первый, который вы определяете, очевидно - where('name', '=', 'Paris'), второй скрыт во взаимоотношениях $user->location.

Когда вы вызываете свойство ORM из отношения, он фактически возвращает объект ORM, определенный в отношении, которое не загружено, но имеет ожидающий where пункт и join в своем объекте. Поэтому, когда вы вызываете метод find в конце, вы вызываете его на объект местоположения с двумя предложениями where и одним join.

Смежные вопросы