如何使用Laravel Eloquent进行“IN”查询?

159

我想在Laravel Eloquent中进行查询,就像这里的原始MySQL查询一样。

SELECT  * from  exampleTbl where id in(1,2,3,4)

我已经在Laravel Eloquent中尝试过这个,但它没有起作用

DB::where("id IN(23,25)")->get()
6个回答

342

这是您在 Eloquent 中的操作方式

$users = User::whereIn('id', array(1, 2, 3))->get();

如果您正在使用查询构建器,则:

$users = DB::table('users')->whereIn('id', array(1, 2, 3))->get();

20

如果您正在使用查询构建器,则可以使用以下方法

DB::table(Newsletter Subscription)
->select('*')
->whereIn('id', $send_users_list)
->get()

如果你正在使用Eloquent,那么可以按照以下方式使用:

$sendUsersList = Newsletter Subscription:: select ('*')
                ->whereIn('id', $send_users_list)
                ->get();

11

语法:

$data = Model::whereIn('field_name', [1, 2, 3])->get();

用于用户模型

$usersList = Users::whereIn('id', [1, 2, 3])->get();

10

正如 @Raheel 所回答的那样,如果你在使用 Laravel 6/7,则可以使用 Eloquent 的 whereIn 查询。

示例1:

$users = User::wherein('id',[1,2,3])->get();

例子2:

$users = DB::table('users')->whereIn('id', [1, 2, 3])->get();

示例3:

$ids = [1,2,3];

$users = User::wherein('id',$ids)->get();

3
这段回答的意思是:这段代码与5年前被接受的答案中的代码完全相同。那么这个回答的意义是什么? - miken32

2
自 Laravel 5.7 开始,有一个名为 whereIntegerInRaw 的方法。它的执行速度比 whereIn 更快。
User::whereIn('id', [1, 2, 3])->get();

User::whereIntegerInRaw('id', [1, 2, 3])->get();

您可以查看PR

有助于提高性能。感谢您的信息。 - Hana Hasanah

1
也许你想使用whereRaw($query) 你的代码:
DB::where("id IN(23,25)")->get()

转换成:

DB::whereRaw("id IN(23,25)")->get()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接