繁体   English   中英

如何在Laravel中使用两个WhereIn

[英]How to use two WhereIn with Laravel

我有一个简单的查询,其中$ clubs和$ user_ids是数组。 我想在同一个查询中使用两个WhereIn,例如$ clubs = array(1,2,3)和$ user_id = array(25,30,40)。 数据库中有一个条目,如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');

这就是核心中whereIn的代码

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;
}

似乎不可能直接实现,但是如果您可以某种方式覆盖它,则可能会有所帮助。

另一种方法是使用高级

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();

没有测试过,但似乎可以进行一些修改。

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

例如试试这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM