在 Eloquent 查询/Laravel 5.2 中使用变量

Posted

技术标签:

【中文标题】在 Eloquent 查询/Laravel 5.2 中使用变量【英文标题】:Use variables in Eloquent query / Laravel 5.2 【发布时间】:2016-12-18 10:39:45 【问题描述】:

在我的 Laravel 5.2 控制器中,我正在使用 Eloquent ORM 执行请求:

$products = Product::where('first_condition', 'first_condition_value')
                            ->where('second_condition', 'second_condition_value')
                            ->get();

此请求运行良好,并为我提供了符合这两个条件的产品列表。

理想情况下,我想生成一个$request 变量并在我的请求中使用它:

$request = "where('first_condition', 'first_condition_value')->where('second_condition', 'second_condition_value')"

我没有设法让这段代码运行。

为了给你更多的视角,请求可以有从 2 到 n 的多个条件,所以我想用 for 循环生成它。

【问题讨论】:

【参考方案1】:

将您的额外条件包装在一个数组中并将它们循环为以下 sn-p:

<?php
$query = Product::where('first_condition', 'first_condition_value');

$conditions = array(
    'second_condition' => 'second_condition_value',
    'third_condition' => 'third_condition_value',
);

foreach ($conditions as $key => $value) 
    $query->where($key, $value);


$products = $query->get();

【讨论】:

以上是关于在 Eloquent 查询/Laravel 5.2 中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 pluck() 来自 Eloquent 模型集合的多个属性

Laravel 5.2 Eloquent 主键作为多键

Laravel 5.2 - pluck() 方法返回数组

Laravel 5.2 Eloquent ORM 从 3 个表中获取数据

Laravel 5.2左连接一对多的唯一行,列最高值

Laravel Eloquent Model :: find不起作用