如何将 YII2 查询 "where" 条件从数组转换为字符串

how to convert YII2 query "where" conditions from array to string

我有一组条件 where() 方法,可以成功添加到查询构建器:

 $condition = [
     'AND',
     ['archived' => 0],
     ['broken' => 0],
     ['gender' => 1],
     [
         'OR',
         ['visible' => 1],
         ['status' => 1],
     ],
 ];

但在某些地方我需要将这个数组转换为字符串

(`archived` = 0) AND (`broken`= 0) AND (`gender` = 1) AND (`visible` = 1 OR `status` = 1)

然后将其放入 select() 方法,如原始 SQL 语句

SUM(IF((`archived` = 0) AND (`broken`= 0) AND (`gender` = 1) AND (`visible` = 1 OR `status` = 1)))

您需要使用 buildCondition() 将参数传递给主查询:

$sql = Yii::$app->db->queryBuilder->buildCondition($condition, $params);
$query
    ->select([
        'myField' => "SUM(IF($sql, 1, 0))"
    ])
    ->addParams($params);