4

我怎样才能让它工作?

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

我已经建立了所有的关系,当我进行其他查询时,一切似乎都在工作。但是,在上面的查询中,它没有将表users加入mytable。我认为这可能是因为一个mytable 可以有很多用户。

在参考文献中有一种方法join(),我想我可能需要在这里使用它,但他们没有提供任何信息,而且我在这里搜索的东西不起作用。

当我尝试使用join代替时with,它会尝试加入表格,但它不包含任何“加入”信息,只是给出一个空的().

我知道我的 ORM DB 关系都设置正确,所以我有点困惑。

4

2 回答 2

5

Kohana 有不错的文档,没有找对地方是……好吧,你的问题。

ORM::with()用于加载一对一(属于并具有一个)关系,尽管您可以使用所有Database_Query_Builder方法与 ORM 一起使用:

$stuff = ORM::factory('mytable')
        ->join('users','LEFT')
        ->on('users.mytable_id','=','mytables.id')
        ->find_all();
于 2011-04-16T08:40:55.133 回答
1
SELECT * from table1
LEFT JOIN table2
ON table1.id = table2.id
AND table2.flag = 'Y' 
AND table2.siteid = '12'
WHERE table1.siteid = '12'

上面的查询是怎么写成 kohana 的 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();
于 2012-04-25T06:05:20.907 回答