我想在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)
对于单个值是好的,但是当我传递数组时,它给出了"数组到字符串转换"错误.任何解决方案如何传递数组.
您不能将数组与字符串进行比较,反之亦然,首先您应该将数组内爆为字符串,然后在中使用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)