【问题标题】:How to use two WhereIn with Laravel如何在 Laravel 中使用两个 WhereIn
【发布时间】:2018-11-02 12:42:27
【问题描述】:

我有一个简单的查询,其中 $clubs 和 $user_ids 是数组。我想在同一个查询中使用两个 WhereIn。例如 $clubs = array(1,2,3) 和 $user_id = array(25,30,40)。 DB中有一个条目,这个user_id = 25,对应的club_id = 1。我想从查询结果中列出,user_id = 25。

$query = \DB::table('users_clubs')          
            ->WhereIn('user_id', $user_ids)
            ->WhereIn('club_id',$clubs)
            ->lists('user_id');

【问题讨论】:

  • 您解决了这个问题吗,如果解决了,请发布解决方案。
  • @PrafullaKumarSahu 我解决了,我想我用左连接来解决这个问题。另外,我认为两个 WhereIn 不能这样使用。
  • 您能否发布您自己的答案会更好,并将其标记为解决方案。
  • 好的,当然。我需要一点时间来找到那个代码。它是几天前完成的,我实际上不记得我在哪里应用了它。

标签: php mysql laravel laravel-5


【解决方案1】:

这不知何故是 whereIn in core 的代码

public function whereIn($column, $values, $boolean = 'and', $not = false)
{
    $type = $not ? 'NotIn' : 'In';

    // ... irrelevant code omitted ...

    $this->wheres[] = compact('type', 'column', 'values', 'boolean');

    $this->addBinding($values, 'where');

    return $this;
}

似乎不能直接使用,但如果你能以某种方式覆盖它,它可能会有所帮助。

另一种方法是使用Advance where

DB::table('users_clubs')
            ->Where(function($query)
            {
                foreach( $user_ids as $user_id ){
                    $query->where('user_id', '=', $user_id);
                }

            })
            ->Where(function($query)
            {
                foreach( $clubs as $club){
                    $query->where('club_id', '=', $club);
                }
            })
            ->get();

未经测试,但似乎可以通过一些修改来工作。

【讨论】:

  • @JintoAntony 好的,请告诉我使用后的状态,或者如果您有其他解决方案,请发布。
  • 任何错误或输出错误,您可以使用更接近的更新,然后我会尝试修改。
  • 取出一个空数组,我认为它不正确匹配。
  • $query->where('club_id', '=', $club); 想一想我们可以如何改变它,但首先要尝试 $query->where(1);并检查你是否得到了什么。
【解决方案2】:

你有什么错误吗?还是没有尝试您的查询?您可以根据需要使用多个whereIn()。在WhereIn() 之后添加get() 然后lists()

例如试试这个

$query = \DB::table('users_clubs')          
            ->WhereIn('user_id', $user_ids)
            ->WhereIn('club_id',$clubs)
            ->get()
            ->lists('user_id');

【讨论】:

  • 您遇到了什么错误/问题,至少给我们一些线索,以便我们可以相应地帮助您
猜你喜欢
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2021-07-27
  • 1970-01-01
  • 2021-02-13
  • 2021-02-10
相关资源
最近更新 更多