【发布时间】:2021-09-12 12:05:03
【问题描述】:
我想要实现的是创建一个查询并使用多个结尾:
例如
$query = User::where('is_admin', true);
if ($query->where('badge', 'red')->exists())
{
//do something
}
if ($query->where('badge', 'green')->exists())
{
//do something
}
$query->get();
$query->first();
这样,每次查询完成时,$query 变量都会被覆盖,因此无法重复使用 $query;
我目前的解决方案是使用clone
$query = User::where('is_admin', true);
$query1 = clone $query;
if ($query1->where('badge', 'red')->exists())
{
//do something
}
$query2 = clone $query
if ($query2->where('badge', 'green')->exists())
{
//do something
}
$query3 = clone $query;
$query3->get();
$query4 = clone $query;
$query4->first();
这个例子只是为了说明问题,而不是真实的 生活场景。
我猜它可以工作并且做我想做的事,只是感觉不像是 laravel 做某事的方式,相当冗长,而且随着更复杂的逻辑变得更糟。
目标是在每次完成查询时重复使用相同的变量而不覆盖它。
有人对此有更好的解决方案吗?
有没有办法以某种方式破坏$query 变量的反应性?
谢谢
【问题讨论】:
-
$query = User::where('is_admin', true)->get();