SugarQuery 在 for 循环中构建 queryOr
SugarQuery build up queryOr in a for loop
我正在尝试基于用户传入的逗号分隔列表构建一个 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();
有什么方法可以构建它,以便我循环的所有值都进入同一个 queryOr 吗?
您可以将当前的 SugarQuery 对象设置到它自己的变量中,然后按如下方式将其送入循环:
$currentQuery = $query->where()->queryOr();
foreach($requestNames as $name)
{
$currentQuery->contains('name', $name);
}
这会调用与已建立的 queryOr 相同的查询对象上的 contains 函数。由于 $currentQuery
变量引用相同的 SugarQuery 对象,运行 $query->execute()
稍后将包含参数。
我正在尝试基于用户传入的逗号分隔列表构建一个 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();
有什么方法可以构建它,以便我循环的所有值都进入同一个 queryOr 吗?
您可以将当前的 SugarQuery 对象设置到它自己的变量中,然后按如下方式将其送入循环:
$currentQuery = $query->where()->queryOr();
foreach($requestNames as $name)
{
$currentQuery->contains('name', $name);
}
这会调用与已建立的 queryOr 相同的查询对象上的 contains 函数。由于 $currentQuery
变量引用相同的 SugarQuery 对象,运行 $query->execute()
稍后将包含参数。