You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2中条件为空时忽略WHERE子句的问题求助

问题解决思路及代码修改

问题根源

你的代码中使用andFilterWhere(['CompanyCode' => $comp_ids])时,当$comp_ids为空数组(即当前用户没有关联任何公司),Yii会自动生成WHERE CompanyCode IS NULL的过滤条件,这就导致只返回CompanyCode为空的产品,不符合你“无论条件是否匹配都返回结果”的需求。

修改后的代码

$comp_ids = AllowArea::find()
    ->select(['comp_code'])
    ->where(['user_id' => Yii::$app->user->id])
    ->column();

$query = (new \yii\db\Query())
    ->select([
        'ProductCode',
        'ProductNameFull',
        'ProductSpec',
        'ProductGroup',
        'CompanyCode',
        'CompanyName',
        'Price',
        'PurchasePrice'
    ])->from('Product');

// 仅当用户有关联公司时,才添加公司代码过滤条件
if (!empty($comp_ids)) {
    $query->andWhere(['CompanyCode' => $comp_ids]);
}

$ref = $query->all(Yii::$app->sds);

说明

  • 先判断$comp_ids是否为空,只有当数组非空时,才给查询添加CompanyCode的过滤条件
  • 如果用户没有关联任何公司,查询会直接返回Product表的全部数据,满足你的业务需求

内容的提问来源于stack exchange,提问作者Moeez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:30:44