【问题标题】:SugarQuery build up queryOr in a for loopSugarQuery 在 for 循环中构建 queryOr
【发布时间】:2017-01-06 11:16:30
【问题描述】:

我正在尝试基于用户传入的逗号分隔列表构建一个 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?

【问题讨论】:

  • 嗨,本,我的回答有帮助吗?如果这解决了您的问题,请将其标记为答案。

标签: sugarcrm sugarbean


【解决方案1】:

您可以将当前的 SugarQuery 对象设置为它自己的变量,然后按如下方式通过循环提供它:

$currentQuery = $query->where()->queryOr();
foreach($requestNames as $name)
{
    $currentQuery->contains('name', $name);
}

这会在同一个查询对象上调用包含函数,查询或已建立。由于$currentQuery 变量引用了相同的SugarQuery 对象,因此稍后运行$query->execute() 将包含参数。

【讨论】:

    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    相关资源
    最近更新 更多