我可以做 Model->where('id', ARRAY) 多个 where 条件吗?

Posted

技术标签:

【中文标题】我可以做 Model->where(\'id\', ARRAY) 多个 where 条件吗?【英文标题】:Can I do Model->where('id', ARRAY) multiple where conditions?我可以做 Model->where('id', ARRAY) 多个 where 条件吗? 【发布时间】:2015-08-22 18:28:03 【问题描述】:

标题说明了一切。

我知道我可以做到这一点:

DB::table('items')->where('something', 'value')->get()

但我想检查多个值的 where 条件,如下所示:

DB::table('items')->where('something', 'array_of_value')->get()

有没有简单的方法可以做到这一点?

【问题讨论】:

【参考方案1】:

whereIn():

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

【讨论】:

像魅力一样工作。【参考方案2】:

您可以使用以下解决方案之一:

$items = Item::whereIn('id', [1,2,..])->get();

或:

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

【讨论】:

【参考方案3】:

如果你需要几个参数:

$ids = [1,2,3,4];
$not_ids = [5,6,7,8];
DB::table('table')->whereIn('id', $ids)
                  ->whereNotIn('id', $not_ids)
                  ->where('status', 1)
                  ->get();

【讨论】:

对我来说非常精确,加上 Laravel 方式。也许是品味的情况。你应该如何更精确?谢谢! 还有其他方法可以做到这一点,所以我说,但你也对,可能有品味。【参考方案4】:

您可以使用whereIn,它接受一个数组作为第二个参数。

DB:table('table')
   ->whereIn('column', [value, value, value])
   ->get()

您可以多次链接 where。

DB:table('table')->where('column', 'operator', 'value')
    ->where('column', 'operator', 'value')
    ->where('column', 'operator', 'value')
    ->get();

这将使用AND 运算符。如果你需要OR,你可以使用orWhere 方法。

对于高级where 语句

DB::table('table')
    ->where('column', 'operator', 'value')
    ->orWhere(function($query)
    
        $query->where('column', 'operator', 'value')
            ->where('column', 'operator', 'value');
    )
    ->get();

【讨论】:

在 AND 运算符的情况下,您的链接方法对我有用!谢谢【参考方案5】:

如果您按 ID 搜索,也可以使用:

$items = Item::find(array_of_ids);

【讨论】:

【参考方案6】:

$whereData = [['name', 'test'], ['id', '', '5']];

$users = DB::table('users')->where($whereData)->get();

【讨论】:

【参考方案7】:

数组格式 Laravel 中的 WHERE AND SELECT 条件

use DB;

$conditions = array(
    array('email', '=', 'user@gmail.com')
);
$selected = array('id','name','email','mobile','created');
$result = DB::table('users')->select($selected)->where($conditions)->get();

【讨论】:

我认为您误解了这个问题。 OP 询问是否有办法让查询生成器接受 VALUES 数组作为 where 子句的值,而不是条件数组。

以上是关于我可以做 Model->where('id', ARRAY) 多个 where 条件吗?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel框架——增删改查

Laravel Eloquent Model :: find不起作用

thinkphp的where问题

Form::Model eloquent 绑定

tp5 中 model 的查询方法

一个图片生成多个尺寸的图片