Несколько пропелоподобных фильтров

Попытка отфильтровать столбец по нескольким условиям с помощью LIKE.

Нравится:

$d = ItemQuery::create()
                ->filterByName($array_of_names, Criteria::LIKE)
                ->find();

Но я получаю «преобразование массива в строку в propel / src / Propel / Runtime / Connection / StatementWrapper.php»

Как я могу фильтровать по нескольким «именам», используя критерий «НРАВИТСЯ»?

Я в основном хочу, чтобы запрос был

...name LIKE %name1% OR name LIKE %name2% OR name LIKE %name2%...

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
762
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что $array_of_names - это [$name1, $name2, ...]

$q = ItemQuery::create()

foreach ($array_of_names as $i => $name) {
    if ($i > 0) { // Not the first item in the array
        $q->_or();
    }

    $q->where('Item.Name LIKE %?%', $name);
}

$d = $q->find();

Видеть

http://propelorm.org/blog/2012/03/20/don-t-do-this-at-home-5-use-where-instead-of-filterby.html

и

http://propelorm.org/blog/2011/02/21/using-or-in-propel-queries-becomes-much-easier-with-propel-1-6.html

или

https://github.com/propelorm/Propel/issues/120

Отлично - спасибо! - Также -> filterByName ($ names, Criteria :: LIKE) тоже работает здесь вместо where ()

arsis-dev 03.09.2018 15:15

Другие вопросы по теме