Как написать следующий запрос в orm, используя Kohana - PullRequest
0 голосов
/ 21 июня 2011

выберите * из u_question uq, пользователи u где uq.asked_by = u.id и ask_by в (выберите u.id из fb_relations f, пользователи u, где f.user1 = '515683059' и u.fb_uid = f.user2) группировать по asked_by

1 Ответ

1 голос
/ 21 июня 2011

Это было бы что-то вроде:

$subquery = DB::select('u.id')
    ->from(array('fb_relations','f'), array('users','u'))
    ->where('f.user1','=','515683059')
    ->where('u.fb_uid','=','f.user2');

$results = ORM::factory('user')
    ->select('uq.*')
    ->join(array('u_question','uq'))
    ->on('uq.asked_by','=','users.id')
    ->where('uq.asked_by','IN',$subquery)
    ->group_by('asked_by')
    ->find_all();

Я не могу гарантировать, что это сработает.Обратите внимание, что модели ORM всегда выбирают все из соответствующей таблицы (например, таблицы. *), Добавляя «обычный» из (), поэтому лучше использовать «строгие» соединения вместо использования из () дляуказание дополнительной таблицы.

А что касается подзапросов, вы можете создавать их таким же образом или напрямую с помощью строкового объекта Database_Query без построителя запросов (я бы не использовал его в этом случае).* Вы должны прочитать документы

...