Выполните поиск, просматривая отношения между двумя моделями в Kohana - PullRequest
1 голос
/ 20 декабря 2011

Допустим, у меня есть 2 модели пользователя и местоположение. Между моделями существует определенная взаимосвязь, которая позволяет мне сделать это:

$user->location->name;

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

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

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

1 Ответ

2 голосов
/ 07 января 2012

Короче можно. Вот почему.

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

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

...