Laravel 查询构建器条件与当前查询使用时
Posted
技术标签:
【中文标题】Laravel 查询构建器条件与当前查询使用时【英文标题】:Laravel Query builder condition with current query using when 【发布时间】: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,然后我会调查这个或子查询:) 【参考方案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
使用适当的方式。
【讨论】:
以上是关于Laravel 查询构建器条件与当前查询使用时的主要内容,如果未能解决你的问题,请参考以下文章
与 laravel 在处理数百万条记录时使用块的普通查询构建器相比,Laravel Eloquents 和使用块是不是更慢?