【问题标题】:How to use where in when value is array in laravel?当值是laravel中的数组时,如何使用where?
【发布时间】:2021-06-25 03:34:11
【问题描述】:

我有一个这样的数组

array:3 [▼
  0 => "05046"
  1 => "05005"
  2 => "05030"
]

我想根据上面数组中的 id 显示位置(id 是 05046,05005,05030。如何在下面的控制器中应用它?

实际上我想使用 where in 查询类似的内容。当我手动输入 id 时,它可以工作。

$location= Location::whereIn('id',['05046','05005','05030'])->get();

但是,由于我得到的 id 在数组中,如何在控制器中应用它?

$location= Location::whereIn('id',[$val])->get();

我尝试使用 $val 但在刀片中的选择选项中,该位置仅显示最新的 id(第 2 号数组) $val 当 dd($val) 显示时

array:3 [▼
  0 => "05046"
  1 => "05005"
  2 => "05030"
]

刀片

<select class="select" name="loc" id="loc" required="">
     @foreach ($location as $loc)
            <option value="{{$loc->id}}">{{$loc->name}}</option>
      @endforeach
</select>

【问题讨论】:

  • Location::whereIn('id',[05046,05005,05030])-&gt;get(); 仅获得 1 条记录(数组 2)?
  • Location::whereIn('id',[05046,05005,05030])->get();这样可以显示所有,但是当使用 $val 时,它只显示 1 个 id
  • 告诉我,这 2 个查询的结果是否相同? Location::whereIn('id',[05046,05005,05030])-&gt;get();Location::whereIn('id',["05046","05005","05030"])-&gt;get();
  • 啊抱歉,在我的示例中,忘记添加引号 ('),我实际上使用了我的代码 Location::whereIn('id',["05046","05005","05030 "]) 带引号

标签: php arrays laravel


【解决方案1】:

这是你的错误。如果你已经有了 $val 数组:

$val = [
  0 => "05046"
  1 => "05005"
  2 => "05030"
];

whereIn 中使用它时不要添加[] 括号,因为这样你就声明它是一个数组内的数组。 whereIn 要求第二个参数是一个常规数组。只需这样做:

$location= Location::whereIn('id', $val)->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 2018-01-22
    • 2014-10-15
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2021-03-30
    • 2016-07-28
    相关资源
    最近更新 更多