Таблицы, не входящие в Kohana 3.1 ORM - PullRequest
4 голосов
/ 16 апреля 2011

Как мне заставить это работать?

$stuff = ORM::factory('mytable')
    ->with('user')
    ->with('other_stuff')
    ->find_all();

У меня установлены все мои отношения, и, кажется, все работает, когда я выполняю другие запросы. Однако в приведенном выше запросе он не объединяет таблицу users до mytable . Я думаю, это может быть потому, что для одного mytable может быть много пользователей.

В ссылке есть метод под названием join(), который, я думаю, мне, возможно, понадобится использовать здесь, но они не дают никакой информации о нем и прочем Я искал здесь не работает.

Когда я пытаюсь использовать join вместо with, он пытается присоединиться к таблице, но он не содержит никакой информации о присоединении, просто выдает пустой ().

Я знаю, что все мои отношения с БД ORM установлены правильно, поэтому я немного сбит с толку.

Ответы [ 2 ]

5 голосов
/ 16 апреля 2011

Кохана имеет приличную документацию, не ищет в нужном месте ... ну, ваша проблема.

ORM::with() используется для загрузки отношений один-к-одному (принадлежит и имеет один),хотя у вас есть все Database_Query_Builder методы для использования с ORM в вашем распоряжении:

$stuff = ORM::factory('mytable')
        ->join('users','LEFT')
        ->on('users.mytable_id','=','mytables.id')
        ->find_all();
1 голос
/ 25 апреля 2012
SELECT * from table1
LEFT JOIN table2
ON table1.id = table2.id
AND table2.flag = 'Y' 
AND table2.siteid = '12'
WHERE table1.siteid = '12'

Как приведенный выше запрос написан в формате ORM kohana?Правильно ли указано ниже

$stuff = ORM::factory('table1')
    ->join('table2','LEFT')
    ->on('table1.id','=','table2.id')
    ->on('table2.flag','=','Y')
    ->on('table2.siteid', '=', '12')
    ->where('table1.id', '=', '12')
    ->find_all();
...