有没有一种方法可以通过 orWhereIn 参数一一循环查询生成器?

发布于 2025-01-20 18:40:19 字数 331 浏览 0 评论 0原文

我想知道是否有一种方法可以循环- > orwhere('parent_id',$ data1,2,3,4,5)

 $data= data::query()
    ->where('parent_id', $this->id)
    ->orWhereIn('parent_id', $data1)
    ->orWhereIn('parent_id', $data2)
    ->orWhereIn('parent_id', $data3)
    ->orWhereIn('parent_id', $data4);

I was wondering if there's a way to loop ->OrWhereIn('parent_id', $data1,2,3,4,5)?

 $data= data::query()
    ->where('parent_id', $this->id)
    ->orWhereIn('parent_id', $data1)
    ->orWhereIn('parent_id', $data2)
    ->orWhereIn('parent_id', $data3)
    ->orWhereIn('parent_id', $data4);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

隔纱相望 2025-01-27 18:40:19

也许你可以这样:

->orWhereIn('parent_id', [$data1, $data2, $data3, $data4])

假设所有这些都不是子数组。如果在尝试此操作之前将它们合并到一个数组中。

Maybe you could something like this:

->orWhereIn('parent_id', [$data1, $data2, $data3, $data4])

Provided all of these are not subarrays. If they are merge them into a single array before trying this.

舞袖。长 2025-01-27 18:40:19

您可以仅使用 whereIn 函数来实现该结果,而不是循环查询,只需循环传递 whereIn 函数作为第二个参数的数组即可。

$parent_ids = [];

foreach($some_data as $data) {
  // [add ids in parent_ids here]
}

$data= data::query()->whereIn('parent_id', $parent_ids);

或者,如果您想在查询生成器中循环,您可以使用嵌套 where:

$parent_ids = [1, 2, 3, 4, $data];

$data= data::query()
    ->where(function($q) use ($parent_ids) {
      foreach($parent_ids as $id) {
        $q->orWhere('parent_id', $id);
      }
    });

结果 SQL:

SELECT * FROM table WHERE (parent_id = 1 OR parent_id = 2 OR parent_id = 3 ... );

You can use just whereIn function to achieve that result and instead of looping queries, just loop the array you pass whereIn function as second parameter.

$parent_ids = [];

foreach($some_data as $data) {
  // [add ids in parent_ids here]
}

$data= data::query()->whereIn('parent_id', $parent_ids);

Or if you want to loop in query builder you can use nested where:

$parent_ids = [1, 2, 3, 4, $data];

$data= data::query()
    ->where(function($q) use ($parent_ids) {
      foreach($parent_ids as $id) {
        $q->orWhere('parent_id', $id);
      }
    });

Result SQL:

SELECT * FROM table WHERE (parent_id = 1 OR parent_id = 2 OR parent_id = 3 ... );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文