我只需要查询中的最新5行,因此我可以使用
$view->with('recent', Transaction::SELECT('amount')
->latest()
->where('amount', '!=', null)
->take(5)->get());
这给了我我所需的信息,但是DeBug Bar指出:
14 statements were executed, 14 of which were duplicated
我目前在该表中有14条记录。我在表中添加的记录越多,得到的重复项就越多。
如何减少这些查询?
目前这样称呼它:
@foreach($recent as $rec)
<li>{{ number_format($rec->amount / 100, 2) }}</li>
@endforeach
答案 0 :(得分:1)
尝试
将'change.to.footer'更改为footer.blade.php路径
将\ App \ Transaction更改为您的模型路径
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('change.to.footer', function ($view) {
$view->with('recent', \App\Transaction::SELECT('amount')
->latest()
->where('amount', '!=', null)
->take(5)->get());
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
如果要在所有刀片中使用该变量,
也许您可以制作模型方法
// Transaction model
public static function recent()
{
return static::SELECT('amount')
->latest()
->where('amount', '!=', null)
->take(5)->get());
}
制作视图作曲家
public function boot()
{
view()->share('recent', \App\Transaction::recent());
}