2011-04-16 1 views
4

Как это получить?Столы, не входящие в Kohana 3.1 ORM

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

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

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

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

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

ответ

5

Kohana имеет приличную документацию, не глядя в нужное место ... ну, ваша проблема.

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

$stuff = ORM::factory('mytable') 
     ->join('users','LEFT') 
     ->on('users.mytable_id','=','mytables.id') 
     ->find_all(); 
+0

Именно так. Мне не хватало '-> on()' stuff. /вздох. Я не знал, что вы можете использовать методы DB Query Builder с ORM. Я изучаю Кохану, когда я иду, и в документации не было ничего об этом! Но теперь я знаю, и я очень благодарю вас за вашу помощь! -Brian – DondeEstaMiCulo

+0

Быстрый вопрос о повторении ... Я получаю правильные результаты DB от всех таблиц «с», но ничего из таблицы «присоединился». Как получить данные одного поля из таблицы пользователей в дополнение к другим? Спасибо. – DondeEstaMiCulo

+2

-> выберите ('join_table. *') – Kemo

1
SELECT * from table1 
LEFT JOIN table2 
ON table1.id = table2.id 
AND table2.flag = 'Y' 
AND table2.siteid = '12' 
WHERE table1.siteid = '12' 

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

$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(); 

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

  • Нет связанных вопросов^_^