我正在运行laravel数据库查询:
$relatedUsers = DB::select("Select Distinct user_id FROM customerLinks WHERE customer_id IN (?) ", array($currentUserCustomerLinks_csv) );
变量$currentUserCustomerLinks_csv
包含我正在寻找的特定customer_ids的csv字符串。
当我在laravel中运行此查询时,对于与user_id
字符串中的第一个值匹配的记录,仅返回$currentUserCustomerLinks_csv
个IN()
。 csv中的所有其他值都将被忽略。
当我直接在我的mysql数据库中运行相同的查询时,我得到了完整的id列表。
在{{1}}函数中使用时,将csv字符串传递到数据库外观是否有问题?我没有看到在文档中执行类似查询的正确方法的任何示例。
答案 0 :(得分:0)
变量
$currentUserCustomerLinks_csv
包含我正在寻找的特定customer_id
的csv字符串。
使用IN
无法在csv
输入中提供正确的结果
此类输入值可以使用FIND_IN_SET
返回的任何正int
都表示找到匹配项。
示例:
mysql> select FIND_IN_SET( 'in', 'Rav,in,der' ) found_indx_1
-> , FIND_IN_SET( 'no', 'Rav,in,der' ) found_indx_2;
+--------------+--------------+
| found_indx_1 | found_indx_2 |
+--------------+--------------+
| 2 | 0 |
+--------------+--------------+
更改部分代码:
$sql = "select distinct user_id from customerLinks
where FIND_IN_SET ( customer_id, ? ) > 0";
$relatedUsers = DB::select( $sql, array( $currentUserCustomerLinks_csv ) );
请参阅: