Jump to content

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

 

Edited by akse1erator

Share this post


Link to post
Share on other sites

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

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);
и нафига ты запросы к таблицам фильтров засунул в модель опций?..

Share this post


Link to post
Share on other sites

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

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;@ */

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

print_r($filter_id); ?

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

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

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

Edited by akse1erator

Share this post


Link to post
Share on other sites

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

 

 

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

 

 

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

 

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

 

понял.

 

 

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

 

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

Share this post


Link to post
Share on other sites
В 14.08.2016 в 15:12, SlideShow сказав:

 

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

 

понял.

 

 

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

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

Share this post


Link to post
Share on other sites

ну дк смотрите что у вас тут

catalog/view/theme/bigshop/template/common/header.tpl строка 7

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.