Задать вопрос

Составление сложных запросов на базе Propel (ORM)

Буду очень рад, если кто-то пояснит мне, как создавать сложные конструкции в этом самом "пропеллере".
Задача:
Добавить в существующую модель, часть запроса

$products = \SProductsQuery::create()
                ->joinWithI18n(\MY_Controller::getCurrentLocale())
                ->leftJoin('ProductVariant')
                ->joinMainCategory()
                ->where('MainCategory.Active = ?', 1)
                ->orderBy('ProductVariant.Stock', 'DESC')
                ->distinct()
                ->filterByActive(true);

//....тут пропущен некоторый участок кода - различные условия и проверки .....

$products = $products
                ->useI18nQuery(\MY_Controller::getCurrentLocale())
                ->filterByName('%' . $search_str . '%')
                ->endUse();
$products = $products->orWhere('ProductVariant.Number LIKE ?', '%' . $search_str . '%');
$products = $products->orWhere('SProducts.Id LIKE ?', $search_str);

И вот после этого мне нужно добавить еще одно условие, вида:
OR WHERE (SProductsI18n.NAME LIKE = '$someString' AND SProductsI18n.NAME LIKE '$oneMoreString')

Убейте, но не могу понять как это на пропеллере делается.
Пробовал работать как с PDO - предать массив.
$stringArr = array($someString, $oneMoreString);
 $products = $products->orWhere('SProductsI18n.Name LIKE ? AND SProductsI18n.Name LIKE ?', $stringArr);

Что-то не выходит. Попытался понять, как работает этот Propel. Но на пятом уровне наследования - голова кругом пошла.
  • Вопрос задан
  • 2530 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
Не мучьтесь, напишите пару строчек человеческого SQL. Понятно что хочется красиво, все дела, но иногда проще написать старый добрый SQL.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы