2016-05-13 35 views
0

我面对我的query.Kindly一个问题帮我排序的问题(我在的Kohana框架新手)问题在Kohana中查询

$posts->select(array(DB::expr('(SELECT COUNT(id_visit) FROM `oc2_visits` WHERE `oc2_post`.`id_post` = `oc2_visits`.`id_ad` AND `oc2_visits`.controller = "Blog" GROUP BY `oc2_visits`.`id_ad`)'), 'hits')); 

     //we sort all ads with few parameters 
     $posts = $posts->order_by('created','desc') 
         ->limit($pagination->items_per_page) 
         ->offset($pagination->offset) 
         ->limit(Theme::get('num_home_blog_posts', 4))->cached() 
         ->find_all(); 

正如你所看到的“命中”是属性集在DB:expr()。在我看来,我试图访问$ posts-> hit;属性。然后出现命中属性的问题不存在。 enter image description here

图像附加,请帮助我不是kohana框架的专家。

+0

让我们看看你的“邮报”的模型类文件。根据错误信息 – pogeybait

+0

FYI,当我开始在版本2.0中开始使用Kohana时,您错过了“命中”字段,我曾经很多次使用ORM,但后来发现它太严格了。我放弃了ORM,现在正在使用数据库实例的直接方法,如下所示:$ query = DB :: select('*') - > from('oc2_visits) - > where('id','=',1); \t $ shipping = $ query-> as_object() - > execute() - > current(); – pogeybait

回答

0

试试这个非ORM方法:

$query = DB::select(array(DB::Expr('COUNT(v.id_visit)'), 'hits')) 
    ->from(array('oc2_visits', 'v')) 
    ->join(array('oc2_post', 'p'), 'INNER') 
     ->on('p.id_post', '=', 'v.id_ad') 
    ->where('v.controller', '=', 'Blog') 
    ->group_by('v.id_ad') 
    ->order_by('v.created','desc') 
    ->limit($pagination->items_per_page) //why 2 limit statements? Oversight? 
    ->offset($pagination->offset) 
    ->limit(Theme::get('num_home_blog_posts', 4)); 
$posts = $query->execute(); 
//Or if you want objects use: 
$posts = $query->as_object()->execute();