如何使用kohana在orm中编写以下查询

时间:2011-06-21 09:33:46

标签: orm kohana-3

  

从u_question uq中选择*,用户u   其中uq.asked_by = u.id和ask_by   in(从fb_relations中选择u.id.   f,用户u其中f.user1 ='515683059'   和u.fb_uid = f.user2)分组依据   asked_by

1 个答案:

答案 0 :(得分:1)

这就像是:

$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模型总是从所属表中选择所有内容(例如表。*),添加"通常" from()所以使用" strict"是一种更好的做法。 JOIN而不是使用from()来指定附加表。

关于子查询,您可以以这种方式构建它们,也可以直接使用字符串Database_Query对象构建它们而不使用查询构建器(在这种情况下我不会使用它)。

您应该阅读docs