首页 > 解决方案 > Laravel WhereIn 数组只返回第一个索引结果

问题描述

$dean_ids = Auth::user()->dean_id; // "9,11"
$subjects = Subject::whereIn('dean_id', [$dean_ids])->select('id')->get();

仅返回“9”的数据,但是当我这样尝试时:

$subjects = Subject::whereIn('dean_id', [9,11])->select('id')->get(); 
//it returns all data that what i want.

我该如何解决?

标签: phplaraveleloquent

解决方案


如我所见,这一行$dean_ids = Auth::user()->dean_id;返回一个逗号分隔的字符串。因此,当您$dean_ids使用[$dean_ids]它创建数组时,实际上会创建一个数组,例如:

array(
  '9,11'
)

代替

array(
  9,
  11
)

数组中只有一个值。所以你可以做的只是使用explode逗号分割字符串,它还返回一个数组。

你可以试试这个:

$subjects = Subject::whereIn('dean_id', explode(',', $dean_ids))->select('id')->get();

推荐阅读