【问题标题】:Laravel Query builder condition with current query using whenLaravel 查询构建器条件与当前查询使用时
【发布时间】:2020-09-09 02:37:01
【问题描述】:

如何使用 laravel 查询生成器使用当前查询创建条件,是否有可能,我想它看起来像这样

$record = $this->repository
   ->where('value', $value)
   ->when($thisQuery->get()->isNotEmpty(), static function(){
    //execute
    });

【问题讨论】:

  • SQL 查询会是什么样子?您要求在运行查询之前获取查询结果,这令人困惑
  • 我在想我可以在 where() 之后获取当前值,以检查它是否不为空,我可以搜索并使用 if 语句,只是好奇它是否可能使用类似的东西: )
  • 您确实必须分两步完成,正如您提到的 2 个不同的查询
  • 谢谢@ChristopheHubert,然后我会调查这个或子查询:)

标签: php mysql laravel conditional-statements laravel-query-builder


【解决方案1】:

您可以在匿名函数中使用子查询,如下例所示:

 $record = $this->repository
            ->where('value', $value)
            ->where(function($query) {
                /** @var $query Illuminate\Database\Query\Builder  */
                return $query->where('foo', 'LIKE', '%foooo%')
                             ->orWhere('foo', 'bar');
            })
            ->get();

您也可以运行多个 where 子句,如下所示:

 $record = $this->repository
            ->where('value', $value)
            ->where('foo', 'bar')
            ->get();

并取决于requirements 使用适当的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-03
    • 2018-01-11
    • 2017-06-29
    • 2020-10-05
    • 2021-09-25
    • 2021-06-05
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多