2016-07-29 5 views
0
function mostViewedTracks() { 
    $this->load->database();   
    $this->db->select("*"); 
    $this->db->from("file"); 
    $this->db->order_by("views", "desc"); 
    $this->db->limit(8); 
    $query = $this->db->get(); 
    if($query->num_rows() > 0) 
    { 
     $results = $query->result(); 
    } 
    return array(); 
} 

, когда я запустить эту модель он дает ошибку, что неверный аргумент поставляется для Еогеаспа()Недействительный аргумента для Еогеаспа() в CodeIgniter модели

это мой взгляд код:

<?php if(!empty($most_viewed)) { ?> 
    <?php foreach($most_viewed as $row): ?> 
    <a href="<?php echo base_url('index.php/home/track');?>/<?php echo $row->id;?>" class="list-group-item"> 
    <img class="track-list-img" src="<?php echo base_url('assets/img/music');?>/<?php echo $row->id;?>.jpg"> 
    <div class="list-track-infoo"> 
    <h4 class="list-group-item-heading"><?php echo $row->title;?><span class="badge"><?php echo $row->views;?><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span></span> </h4> 
    <p class="list-group-item-text"><?php echo $row->singer;?></p> 
    </div> 
    </a> 
    <?php endforeach; ?> 
    <?php} ?> 

Обновлено

контроллер

function track() { 
    $id = $this->uri->segment(3); 
    $data1['track'] = $this->view_models->track($id); 
    $data1['most_viewed'] = $this->view_models->mostViewedTracks(); 
    $this->load->view('includes/header'); 
    $this->load->view('track', $data1); 
    $this->load->view('includes/footer'); 
} 

Я старался изо всех сил, чтобы решить эту проблему, но все напрасно

+1

обеспечивает правильный код –

+0

пожалуйста, проверьте еще раз я обновил свой вопрос –

+0

ваших возвращающимся массив использование возвратных $ результатов; в модели –

ответ

1

Вместо return array(); вы должны возвращать набор результатов из модели файла

if($query->num_rows() > 0) 
    { 
     return $query->result();// return result set 
    }else{ 
      return FALSE;// 
    } 

В контроллере вы должны вызвать вашу функцию модели, как

$data1['most_viewed'] = $this->view_models->getFeaturedTracks();// change mostViewedTracks to getFeaturedTracks 

В целях использования его в качестве

<?php foreach($most_viewed as $row): ?>// remove $row1 to $row 
+0

было бы лучше не возвращаться из инструкции if ... ожидается, что метод вернет что-то, поместит массив в переменную и вернет это. –

+0

Yep return false, когда нет результата формы запроса !!Хорошо OP забудьте вызвать модельную функцию 'getFeaturedTracks' @ M.I. – Saty

+0

такая же проблема после внесения этих изменений. –

1

Вам нужно изменить две ошибки,

You should return the `$result` array in your model like, 

$results = $query->result(); 
return $results; 

И в изменении Еогеасп $row1 к $row, который производит ошибку. см,

<?php foreach($most_viewed as $row): ?> 
+0

return $ results, u пропустил «s» ... также создает $ results в качестве нулевого или пустого массива и проверяет, не является ли он пустым или пустым, прежде чем использовать его в foreach –

+0

@ M.I. Спасибо, я отредактировал :) –

+0

та же проблема после внесения этих изменений –

0

Функция должна нравится ....

function getFeaturedTracks() { 
    $results = array(); 
    $this->load->database();   
    $this->db->select("*"); 
    $this->db->from("file"); 
    $this->db->order_by("views", "desc"); 
    $this->db->limit(8); 
    $query = $this->db->get(); 
    if($query->num_rows() > 0) 
    { 
     $results = $query->result(); 
    } 
    return $results; 
} 
Смежные вопросы