Форум программистов, компьютерный форум, киберфорум
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 28.06.2017
Сообщений: 18

Yii2 ActiveRecord Как разбить запрос по необходимости

27.04.2018, 09:11. Показов 2800. Ответов 3

Студворк — интернет-сервис помощи студентам
Такой запрос
PHP
1
$query = Addproduct::find()->where(['tip' => $tip])->andWhere(['product' => $listproduct])->andWhere(['like', 'titleru', $q])->all();
можно ли как то так разбить:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$query = Addproduct::find();
 
    if ($maincatalog != NULL)
        $query->where(['catalog' => $maincatalog]);
 
    if ($listproduct != NULL)
        $query->andWhere(['product' => $listproduct]);
 
 
    $query->andWhere(['like', 'titleru', $q])->all();
 
 
или через andFilterWhere так:
 
$query = Addproduct::find()->where('***');
 
$query->andFilterWhere(['catalog' => $maincatalog]);
 
$query->all();
я пробовал оба варианта но не работает
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2018, 09:11
Ответы с готовыми решениями:

Yii2 ActiveRecord
Всем привет! Кто подскажет, как в Yii2 с помощью ActiveRecord вот такие запросы создавать: SELECT * FROM `iblock_element` WHERE ...

Yii2 Циклический обход элементов ActiveRecord
Есть объект ActiveRecord. У него есть поле parent в котором хранится id родительского объекта AR. Мне нужно получить всех родителей до...

FrameWork Yii2 работа с формами и ActiveRecord
Дамы и господа кто может объяснить как привязать функционал кнопкам в формах ActiveRecord? вот пример: <?php use yii\helpers\Html; ...

3
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
27.04.2018, 13:55
PHP
1
2
3
4
5
6
7
8
9
10
11
$query = Addproduct::find()->where(['like', 'titleru', $q]);
 
if(!empty($maincatalog)){
   $query->andWhere(['catalog' => $maincatalog]);
}
 
if(!empty($listproduct)){
   $query->andWhere(['product' => $listproduct]);
}
 
return $query->all();
По логике вещей все должно работать, хотя кто знает, что у вас находится в $maincatalog, $listproduct, МБ там вообще массив и прощай работающий запрос
0
55 / 22 / 10
Регистрация: 18.05.2016
Сообщений: 89
27.04.2018, 13:55
А что не получается, какая ошибка?
Выглядит все верно
0
0 / 0 / 0
Регистрация: 28.06.2017
Сообщений: 18
28.04.2018, 06:45  [ТС]
Когда проверяю ваш код возвращает пустоту хотя снизу на картинке 1.png видно что параметры как listproduct, tip,q заполнено и возвращает такие данные
listproduct: 6
tip: 1
q: абзал
Снизу мой контроллер: (без модели для проверки на валидацию)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function actionSearch(){
$q = trim(Yii::$app->request->get('q'));
        $tip = trim(Yii::$app->request->get('tip'));
        $listproduct = trim(Yii::$app->request->get('listproduct'));
 
        echo 'listproduct: '.$listproduct."<br>";
        echo 'tip: '.$tip."<br>";
        echo 'q: '.$q."<br>";
 
        $query = Addproduct::find()->where(['like', 'titleru', $q]);
 
        if(!empty($listproduct)){
            $query->andWhere(['product' => $listproduct]);
        }
 
        if(!empty($tip)){
            $query->andWhere(['tip' => $tip]);
        }
 
         $query->all();
 
        var_dump($query); die;
return $this->render('search', compact('query', 'type', 'tip', 'listproduct', 'q'));
    }
но когда код меняю на такой выводить все правильно то есть картинка 2.png:
PHP
1
2
        $query = Addproduct::find()->where(['like', 'titleru', $q])->all();
        var_dump($query); die;
Незнаю в чем проблема)))))
Миниатюры
Yii2 ActiveRecord Как разбить запрос по необходимости   Yii2 ActiveRecord Как разбить запрос по необходимости  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2018, 06:45
Помогаю со студенческими работами здесь

Вложенный запрос в yii2
Привет! не получается сделать вложенный запрос. Ругается на поле в условии из &quot;внешнего&quot; запроса. На вот эту строку...

Сложный запрос sql в yii2
Как саму кнопку отправить прикрепить к запросу sql (и вообще какой запрос sql написать чтобы он параллельно уменьшал одну сумму а...

Yii2 - запрос в базу данных mysql
Как в Yii2 построить следующий запрос: SELECT * FROM questions WHERE id_question = $id AND id &gt; $last_id Рылся, так и не нашёл...

Как в Yii используя ActiveRecord выполнить условие ИЛИ?
Добрый день, $user_model = ActiveRecord::model('User')-&gt;findByAttributes(array('LOGIN'=&gt;$this-&gt;LOGIN, 'EMAIL'=&gt;$this-&gt;EMAIL)); ...

Ошибка при установке Yii2-user with Yii2 advanced template
https://github.com/dektrium/yii2-user/blob/master/docs/usage-with-advanced-template.md Ошибка An Error occurred while...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru