我可以使用 Model->where('id', ARRAY) 来实现多个 where 条件吗?

17 浏览
0 Comments

我可以使用 Model->where('id', ARRAY) 来实现多个 where 条件吗?

标题已经说了一切。\n我知道我可以这样做:\n

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

\n但是我想要检查多个值的where条件,像这样:\n

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

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

0
0 Comments

问题出现的原因是用户想要通过多个条件查询数据,但对于给出的方法并不满意。解决方法是使用Laravel框架提供的whereIn、whereNotIn和where方法来实现。

下面是解决方法的示例代码:

$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的风格。也许这是个人口味的问题。你认为应该如何修改才更精确呢?谢谢!

还有其他方法可以实现这个功能,所以我说可能是个人口味的问题。

0
0 Comments

问题的出现是因为用户想要在Model中使用多个where条件进行查询,但是不知道如何实现。以下是解决这个问题的方法:

方法一:

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

方法二:

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

以上两种方法都可以实现在Model中使用多个where条件进行查询。

0
0 Comments

问题:为什么我不能在Laravel的模型中使用多个where条件?

解决方法:使用where条件的whereIn()方法

在Laravel中,可以使用whereIn()方法来实现多个where条件的查询。在查询构造器中,可以使用whereIn()方法来指定一个字段和一个数组,该数组包含了要匹配的值。在下面的示例中,我们使用whereIn()方法来选择id字段值为1、2和3的记录:

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

然而,对于Laravel的模型来说,使用whereIn()方法并不适用。相反,我们需要使用where()方法来实现多个where条件的查询。但是,如果我们尝试在模型中使用where()方法并传递一个数组作为条件,Laravel会把整个数组作为一个条件来处理,而不是把数组中的每个元素作为一个独立的条件。

为了解决这个问题,我们需要使用Laravel的查询作用域。查询作用域是一种将常见的查询逻辑封装在模型中的方法。通过使用查询作用域,我们可以在模型中定义多个where条件,并在查询时使用这些条件。下面是一个使用查询作用域来实现多个where条件的示例:

首先,在模型中定义一个查询作用域:

public function scopeMultipleWhere($query, $conditions)
{
    foreach ($conditions as $condition) {
        $query->where($condition[0], $condition[1], $condition[2]);
    }
    return $query;
}

然后,在使用模型进行查询时,我们可以使用该查询作用域来传递多个where条件:

$items = Item::multipleWhere([
    ['id', '=', 1],
    ['name', 'like', '%example%']
])->get();

通过使用查询作用域和多个where条件,我们可以在Laravel的模型中实现多个where条件的查询。这样,我们可以更灵活地构建复杂的查询语句,并获得我们想要的结果。

0