SugarQuery создает запрос или в цикле for
Я пытаюсь создать queryOr на основе списка через запятую, который передается пользователем, который я зациклю и добавлю значения.
До сих пор я получил это, которое просто строит это:
$query = new SugarQuery();
$query->from(BeanFactory::getBean('rdwrk_Request'));
$skills = $query->join('rdwrk_request_skills_rdwrk_request', array('alias' => 'skills'))->joinName();
$query->select(array(array('name', 'requestName'), array('skills.name', 'skillName')));
if($args["requestName"])
{
$requestName = $args["requestName"];
if(strpos($requestName, ',') !== false)
{
$requestNames = explode(",", $requestName);
foreach($requestNames as $name)
{
$query->where()->queryOr()->contains('name', $name);
}
}
else
{
$query->where()->contains('name', $requestName);
}
}
if($args["skillName"])
{
$query->where()->contains('skills.name', args["skillName"]);
}
$results = $query->execute();
Есть ли способ построить его так, чтобы все значения, по которым я зацикливался, попадали в один запрос?
1 ответ
Решение
Вы можете установить текущий объект SugarQuery в его собственную переменную, а затем передать его через ваш цикл следующим образом:
$currentQuery = $query->where()->queryOr();
foreach($requestNames as $name)
{
$currentQuery->contains('name', $name);
}
Это вызывает функцию contains для того же объекта запроса с установленным queryOr. Так как $currentQuery
переменная ссылается на тот же объект SugarQuery, работает $query->execute()
позже будут включены параметры.