Помогите разобраться. Вывод всех записей с одинаковым значением 2.X

 
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 158
Друзья, помогите разобраться.
Пытаюсь получить все записи по определенному значению стандартными методами движка, но зашел в тупик.

Есть таблица cms_con_model_car

id | model | color
1 | audi | red
2 | bmw | grey
3 | lexus | blue
4 | fiat | grey

нужно достать из БД все записи с 'color' = 'grey'
Должны отобразиться записи

2 | bmw| grey
4 | fiat | grey

В модели пытался сделать так:

Код PHP:
  1.  
  2. public function getModelColor($color){
  3.  
  4. $this->filterStart();
  5. $this->filterEqual('color', $color);
  6. $this->filterOr();
  7. $this->filterLike('color', '%' . $color. '%');
  8. $this->filterEnd();
  9.  
  10. $models = $this->get('con_model_car');
  11.  
  12. return $models;
  13.  
  14. }
  15.  


И вот так:

Код PHP:
  1.  
  2. public function getModelColor($color){
  3.  
  4. $models = $this->get('con_model_car', 'color', $color);
  5. return $models;
  6.  
  7. }
  8.  
Не получилось.

Думаю может вывести сначала все записи, $this->get('con_model_car');
а затем через forech получить нужные,

Но если есть возможность сразу сделать запрос с выборкой стандартными методами движка, то так будет лучше

"Застрял" на элементарном.

Помогите пожалуйста разобраться
Разработка шаблонов для InstantCMS https://red-ray.ru
Шаблоны для InstantCMS 2
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Red Ray:
$this->filterStart();
$this->filterEqual('color', $color);
$this->filterOr();
$this->filterLike('color', '%' . $color. '%');
$this->filterEnd();
А зачем такая многоступенчатость?
Уж или
Код PHP:
  1. $models = $this->filterEqual('color', $color)->get('con_model_car');
или
Код PHP:
  1. $models = $this->filterLike('color', '%' . $color. '%')->get('con_model_car');
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 158
Ris, понял, спасибо!
Проверил свой вариант и ваш вариант, в экшене работает, а в модели нет. Я вызываю функцию getModelColor в другой функции в модели. Значит где-то допустил ошибку.
Буду разбираться. Спасибо!
Редактировалось: 1 раз (Последний: 27 марта 2019 в 09:24)
Разработка шаблонов для InstantCMS https://red-ray.ru
Шаблоны для InstantCMS 2
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Red Ray:
Я вызываю функцию getModelColor в другой функции в модели.
Вам надо не функцию в модели вызывать, а просто фильтр.
Код PHP:
  1. public function filterColor($color){
  2. $this->filterEqual('color', $color);
  3. return $this;
  4. }
А там уж когда будете получать список, просто воткните спереди
Код PHP:
  1. $models = $this->filterColor($color)->get('con_model_car');
Редактировалось: 1 раз (Последний: 27 марта 2019 в 09:39)
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 158
Ris,
Код PHP:
  1.  
  2. // получим все авто с определенным цветом
  3. // хочу отдельно сделать эту функцию, чтобы можно ,было получать авто по цвету, так и в других функциях модели ее вызывать для последующей обработки
  4.  
  5. public function filterColor($color){
  6. $this->filterEqual('color', $color);
  7. return $this;
  8. }
  9.  
  10. public function myNewFunction($color){
  11. $cars = $this->filterColor($color); // вызываем функцию filterColor и передаем ей значение
  12. if($cars) {
  13. // обрабатываем
  14. //.....
  15. //.....
  16. //.....
  17. //.....
  18. }
  19. }
  20.  
хотя конечно можно вместо того чтобы в функции myNewFunction обращаться к функции filterColor,

и как вы говорите прописать
Код PHP:
  1.  
  2. $models = $this->filterColor($color)->get('con_model_car');
  3.  
то есть будет

Код PHP:
  1.  
  2. public function myNewFunction($color){
  3. $models = $this->filterColor($color)->get('con_model_car');
  4. if($models) {
  5. // обрабатываем
  6. //.....
  7. //.....
  8. //.....
  9. //.....
  10. }
  11. }
  12.  
в обоих вариантах как я понимаю все правильно.
Единственное возможно по скорости будет отличаться.
Разработка шаблонов для InstantCMS https://red-ray.ru
Шаблоны для InstantCMS 2
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 2644
Red Ray:
Единственное возможно по скорости будет отличаться.
Оба варианта одинаковы. На выходе в любом случае будет результат запроса
Код PHP:
  1. SELECT * FROM cms_con_model_car WHERE color = 'gray'
Вы сначала придумывайте запрос mysql с помощью которого собираетесь получить нужные данные, а потом уж придумывайте, как это методами модели Инстанта оформить. Вам же проще будет.
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 158
Ris,
Да, я сначала так и прописал, потом искал возможность этот запрос SELECT * FROM cms_con_model_car WHERE color = 'gray'
стандартными методами сделать.
В любом случае Ris, Спасибо Вам!
Разработка шаблонов для InstantCMS https://red-ray.ru
Шаблоны для InstantCMS 2
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: