@kiberchainik
начинающий найкрутейшЫй програмЁр

Как избавиться от ошибки Attempt to modify property of non-object?

есть вот такая форма
5fe7a36c2b407417820138.png
в нее вводятся поисковые слова через запятую и выбираются категории в которых нужно искать.
вот код...
после нажатия на поиск
загружается выбор результата
file profileController:
$v->autosearch = ProfileModel::Instance()->selectUserAutosearchKeywords($v->profile_data['u_id']);
           $v->category_autosearch = unserialize($v->autosearch['tables']);
           $v->tables = array('vacancies' => $profile['vacancies'], 'portfolio' => $profile['portfolio'], 'company' => $profile['company'], 'adverts' => $profile['adverts']);
           if($v->category_autosearch) {
               $v->autosearch_result = ProfileModel::Instance()->getAutosearchList($v->autosearch['keywords'], $v->category_autosearch);
           
               foreach($v->autosearch_result as $k => $v) {
                  $v->autosearch_result[$k]['key_main_array'] = $profile[$k];
               }
           }
           $v->profile_adverts = ProfileModel::Instance()->getListAdvertsForProfile($v->profile_data['u_id']);


file profileModel:
public function getAutosearchList ($keywords, $tables) {
			$query = explode(',', $keywords);
            $rez = array();
            
            foreach ($tables as $t) {
                if ($t == 'company') {
                    $select = 'u.id, u.onlineSatus, ud.user_img, ud.name, ud.lastname, ud.about';
                    $from = 'users as u, user_date as ud';
                    $where = 'MATCH(u.login, u.email, ud.name, ud.lastname, ud.mobile, ud.about, ud.company_name, ud.patent) AGAINST (:query IN BOOLEAN MODE) and u.validStatus = 1 and u.id = ud.user_id and ud.type_person = \'4\'';
                    
                    foreach ($query as $k) {
                        $k = trim($k);
                        $param = array('query' => $k.'*');
                        $rez['company'][$k] = DBClass::Instance()->select($from, array($select), $where, $param, '', '', '', '', '', '2');
                        if(empty($rez['company'][$k])) $rez['company'][$k] = 'Null';
                    }
                }
                
                if ($t == 'portfolio') {
                    $select = 'p.id, p.portfolio_img, p.name, p.lastname, p.about, u.onlineSatus';
                    $from = 'portfolio as p, users as u';
                    $where = 'MATCH(p.name, p.lastname, p.about) AGAINST (:query IN BOOLEAN MODE) and search_status = 0 and u.validStatus = 1 and u.id = p.id_user';
                    
                    foreach ($query as $k) {
                        $k = trim($k);
                        $param = array('query' => $k.'*');
                        $rez['portfolio'][$k] = DBClass::Instance()->select($from, array($select), $where, $param, '', '', '', '', '', '2');
                    }
                }
                
                if ($t == 'adverts') {
                    $select = 'a.id, a.seo, a.title, a.description';
                    $from = 'adverts as a';
                    $where = 'MATCH(a.title, a.description, a.keywords) AGAINST (:query IN BOOLEAN MODE) and validate = 1';
                    
                    foreach ($query as $k) {
                        $k = trim($k);
                        $param = array('query' => $k.'*');
                        $rez['adverts'][$k] = DBClass::Instance()->select($from, array($select), $where, $param, '', '', '', '', '', '2');
                    }
                }
                
                if ($t == 'vacancies') {
                    $select = 'v.id, v.title, v.short_desc';
                    $from = 'vacancies as v';
                    $where = 'MATCH(v.title, v.short_desc, v.full_desc) AGAINST (:query IN BOOLEAN MODE) and valid_status = 1';
                    
                    foreach ($query as $k) {
                        $k = trim($k);
                        $param = array('query' => $k.'*');
                        $rez['vacancies'][$k] = DBClass::Instance()->select($from, array($select), $where, $param, '', '', '', '', '', '2');
                    }
                }
            }
            return $rez;
		}

Warning: Attempt to modify property of non-object in Z:\home\fq.it\www\App\Controllers\ProfileController.php on line 42
ругается на:
$v->autosearch_result[$k]['key_main_array'] = $profile[$k]; //где $profile[$k]; - некая текстовая переменная
  • Вопрос задан
  • 558 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galaxy
Ниче, что вы $v потом перетираете?
foreach($v->autosearch_result as $k => $v) {

Назовут все одной буквой, потом удивляются...
Ответ написан
Комментировать
glaphire
@glaphire Куратор тега PHP
PHP developer
Это значит что $v - это не объект, поэтому нельзя в отношении него вызывать свойство autosearch_result. В примере кода не видно самого создания этого объекта v. Странно эта ошибка не вылезла раньше по стеку)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы