Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Array to string conversion


Recommended Posts

Доброго времени суток.

Столкнулся с такой проблемой: вылезает ошибка  Array to string conversion при записи ячейки из бд в массив .

Модель:

public function getFiltersId(){
$filters = array();
$filter_group2 = $this->db->query("SELECT filter_id FROM " . DB_PREFIX . "filter_description WHERE  filter_group_id = 2");
  foreach ( $filter_group2->rows as $value){
$filters['filter_group_2'][] = $value;
}
return $filters;
}
public function getFilterName ($filter_id){
$name = array();
$query = $this->db->query("SELECT name FROM " . DB_PREFIX . "filter_description WHERE  filter_id = '".$filter_id."'");
  foreach ( $query ->rows as $value){
$name['name'] = $value;
}
return $name;
}

 

Контроллер:


$filters_id = $this->model_catalog_option->getFiltersId();
 
foreach($filters_id['filter_group_2'] as $value){
$name = $this->model_catalog_option->getFilterName($value);
$data['filter_group_2'][] =  $name['name'];
}

 

Сама ошибка указывает на строку

$query = $this->db->query("SELECT name FROM " . DB_PREFIX . "filter_description WHERE  filter_id = '".$filter_id."'");

 

из файла модели, но если удалить весь foreach из контроллера, то ошибка пропадает.

В функции getFilterName() пробовал использовать implode(), fetch_array, записывал в return запрос к бд, записывал в массив name[] результат запроса и передавал массив в контроллер.

При использовании implode() ругается, что в строчке обращения к бд я преобразую массив в строку, а в строчке с implode, что в качестве аргумента должен быть массив.... парадокс однако :-D

 

Змінено користувачем akse1erator
Надіслати
Поділитися на інших сайтах


а нафига тебе столько запросов, если ты тянешь данные из одной и той же таблицы?

public function getFiltersByGroupId($filter_group_id){
$filters = array();
$query = $this->db->query("SELECT filter_id, name FROM ".DB_PREFIX."filter_description WHERE filter_group_id = '".(int)$filter_group_id."'");

/* на случай, если хочешь что-то с данными сделать до возвращения или добавить какие-то */
foreach ($query->rows as $filter_data){
$filters[$filter_group_id][] = $filter_data;
}
/* иначе можно делать просто @return $query->rows;@ */

return $filters;
}
$data['filter_group_2'][] = $this->model_catalog_option->getFiltersByGroupId(2);
и нафига ты запросы к таблицам фильтров засунул в модель опций?..
Надіслати
Поділитися на інших сайтах

а нафига тебе столько запросов, если ты тянешь данные из одной и той же таблицы?

public function getFiltersByGroupId($filter_group_id){
$filters = array();
$query = $this->db->query("SELECT filter_id, name FROM ".DB_PREFIX."filter_description WHERE filter_group_id = '".(int)$filter_group_id."'");

/* на случай, если хочешь что-то с данными сделать до возвращения или добавить какие-то */
foreach ($query->rows as $filter_data){
$filters[$filter_group_id][] = $filter_data;
}
/* иначе можно делать просто @return $query->rows;@ */

return $filters;
}
$data['filter_group_2'][] = $this->model_catalog_option->getFiltersByGroupId(2);
и нафига ты запросы к таблицам фильтров засунул в модель опций?..

 

 

 

 

а нафига тебе столько запросов, если ты тянешь данные из одной и той же таблицы?

 

вариантов может быть масса, почему нет?

 

 

 

и нафига ты запросы к таблицам фильтров засунул в модель опций?.. 

 

это откуда такая инфа?

 

 

 

/* иначе можно делать просто @return $query->rows;@ */

 

ого, хорош...

Надіслати
Поділитися на інших сайтах


а нафига тебе столько запросов, если ты тянешь данные из одной и той же таблицы?

Я пока новичок в php и sql, со временем научусь делать запросы рационально (за пример кстати спасибо). 

и нафига ты запросы к таблицам фильтров засунул в модель опций?..

Чтобы не подключать лишних моделей.

print_r($filter_id); ?

Спасибо, увидел ошибку.

В качестве аргумента передавался массив.  

Тему можно закрыть.

Змінено користувачем akse1erator
Надіслати
Поділитися на інших сайтах


вариантов может быть масса, почему нет?

 

 

это откуда такая инфа?

 

 

ого, хорош...

 

$filters_id = $this->model_catalog_option->getFiltersId();

 

понял.

 

 

Чтобы не подключать лишних моделей.

 

Печаль, т.е. это плохая тенденция, у движка есть code convention, архитектура, соблюдай, учись. В общем не делай так, пусть больше кода, зато если что знаешь куда лезть, код более предсказуемым выходит. Удачи!

Надіслати
Поділитися на інших сайтах


  • 3 years later...
В 14.08.2016 в 15:12, SlideShow сказав:

 

$filters_id = $this->model_catalog_option->getFiltersId();

 

понял.

 

 

Печаль, т.е. это плохая тенденция, у движка есть code convention, архитектура, соблюдай, учись. В общем не делай так, пусть больше кода, зато если что знаешь куда лезть, код более предсказуемым выходит. Удачи!

http://parfum-style.top/
подскажите а у меня что за проблема почему названия сайта нет , а ошибка вылазит)

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.