2016-05-13 104 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();