2016-05-13 3 views
0

я столкнулся вопрос в моем query.Kindly помочь мне разобраться в проблеме (я новичок в Kohana Framework)Проблема в Kohana Query

$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->; имущество. Тогда проблема с появлением свойств хитов не существует. enter image description here

Изображение прилагается, пожалуйста, помогите Я не эксперт в области kohana.

+0

Давайте посмотрим вашу модель класса файл "Post". Вам не хватает поля «хиты» там, в соответствии с сообщением об ошибке – pogeybait

+0

FYI, когда я начал использовать Kohana в версии 2.0. Я часто использовал ORM, но потом обнаружил, что он слишком ограничительный. Я отказался от ORM и теперь использую прямой подход к экземпляру DB, например: $ query = DB :: select ('*') -> from ('oc2_visits) -> где (' 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();