未加入Kohana 3.1 ORM的表格

时间:2011-04-16 06:57:09

标签: kohana-3 kohana-orm

如何让它发挥作用?

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

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

在参考文献中有一个名为join()的方法,我认为我可能需要在这里使用,但他们不会在其上提供 任何 信息,我在这里搜索的东西不起作用。

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

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

2 个答案:

答案 0 :(得分:5)

Kohana有很好的文档,没有找对地方......好吧,你的问题。

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

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

答案 1 :(得分: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();