Как пропустить удаленные записи в запросе базы данных codeigniter - PullRequest
0 голосов
/ 13 мая 2018

В проекте я отображаю недавно просмотренное / найденное название магазина, чтобы клиенты могли быстро к нему обратиться. Я удалил несколько магазинов прямо из базы данных. При отображении недавно найденных сведений о магазине я получаю сообщение об ошибке php «Попытка получить свойство не-объекта». Вставили код ниже.

<?php if(user_logged_in()){ ?>
     <?php $recent = $this->db->select('user_id,shop_id')
                     ->where('user_id',get_session('userid'))
                     ->distinct('user_id')->distinct('shop_id')
                     ->get('recent_view')->result(); ?>
     <?php if(!empty($recent)){ ?>
           <div class="recent shop_list_area" >
                <span class="greypara grey">Recent search</span>

                <ul class="list-group">
                    <?php foreach($recent as $k): ?>
                    <?php $shop = $this->db->where('id',$k->shop_id)
                                  ->get('shop_list')->row(); ?>
                    <?php $idfe = $this->db->where('user_id',$k->user_id)
                                 ->where('shop_id',$shop->id)->get('feedback')->row(); ?>

                    <?php if(empty($idfe)){ ?>
                    <?php if(!empty($shop)){ ?> 

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

добавить этот код в вашу функцию

public function Your_Method(){
    $query = $this->db->select('user_id,shop_id')->where('user_id',get_session('userid'))->distinct('user_id, shop_id')->get('recent_view');
    $recent = ($query->num_rows() > 0) ? $query->result() : false;
    $this->load->view('Your_view_file', compact('recent'));
}

сейчас $recent вернет результат из базы данных, теперь проверит его перед вызовом в файле представления

if($recent && array_filter($recent)){
  // your code            
}else{
  echo 'empty result';
}
0 голосов
/ 14 мая 2018

Я получаю это сообщение об ошибке php "Попытка получить свойство не объект ". Вставили код ниже.

Причина

It's because some of your queries are empty.

То, что вы делаете неправильно, выглядит следующим образом:

  • ->get('recent_view')->result();
  • ->get('feedback')->row();

Не убедившись, что по вашему запросу были возвращены строки, вы звоните либо result()/row().

Мы не можем гарантировать, что запрос всегда будет давать результат, это зависит от таблицы базы данных и запроса, который вы сделали, предположим, что если ваш запрос не возвращает результатов, он не может вызвать метод row() или result().

Что вам нужно сделать, так это связать все ваши методы до get('your_table') и присвоить его некоторой переменной, скажем $query, а затем убедиться, что у вас есть какие-то записи

$query = $this->db->select('user_id,shop_id')
                  ->where('user_id',get_session('userid'))
                  ->distinct('user_id, shop_id')
                  ->get('recent_view');

if( $query->num_rows() > 0 ){

     // here you call either $query -> result() ; $query->row();
     // depending on your requirement.

}else {

    // throw new Exception("No records found");

}
0 голосов
/ 13 мая 2018

Вы пытаетесь получить доступ к результату запроса сначала, вам нужно проверить num_rows() из $ недавнего, если он возвращает какие-либо строки num_rows ()> 0, затем получить результат, а также проверить, что ваш запрос верен, возможно, он возвращает ошибкуи ваш доступ к result() строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...