【问题标题】:Laravel WhereIn array returns only first index results [duplicate]Laravel WhereIn 数组仅返回第一个索引结果[重复]
【发布时间】:2020-05-25 03:42:05
【问题描述】:
$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.

我该如何解决?

【问题讨论】:

  • 如果$dean_ids9,11 这样返回字符串,那么不要像[$dean_ids] 那样创建数组,使用逗号分解字符串。使用类似:$subjects = Subject::whereIn('dean_id', explode(',', $dean_ids))->select('id')->get();
  • 真的好主意,它起作用了,请在下面回答我会标记它。

标签: php laravel eloquent


【解决方案1】:

如我所见,$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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-19
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多