如何在CASE WHEN中传递数组

Vij*_*ana 6 php mysqli yii2

我想在CASE WHEN语句中传递一个数组

$friendlist = [];
    foreach ($data as $datas) 
    {
        if ($datas['friend_one'] == $id) 
        {
            $friendlist[] = $datas['friend_two'];
        }
        else
        {
            $friendlist[] = $datas['friend_one'];
        }
    }

$query->select('(CASE WHEN (u1.user_id = u2.user_id) THEN "Added" ELSE (CASE WHEN (u1.user_id = '.$friendlist.') THEN "Paid" ELSE "Received" END) END) as trans_type')
Run Code Online (Sandbox Code Playgroud)

对于单个值是好的,但是当我传递数组时,它给出了"数组到字符串转换"错误.任何解决方案如何传递数组.

Sal*_*mov 3

您不能将数组与字符串进行比较,反之亦然,首先您应该将数组内爆为字符串,然后在中使用IN

尝试这个:

$query->select(
  '(CASE WHEN (u1.user_id = u2.user_id) THEN "Added"
  ELSE (CASE WHEN (u1.user_id IN ('. implode(",", $friendlist). ')) THEN "Paid"
  ELSE "Received" END) END) as trans_type');
Run Code Online (Sandbox Code Playgroud)