我想在每个页面加载时使用Laravel加载命令;
$mail_count = mail::where('to_id', '=', Auth::user()->id)->where('read', '=', '0')->count('read');
最好的方法是什么?然后,需要在页面的主模板中输出结果。
答案 0 :(得分:6)
使用视图编辑器作为主模板,例如:
// app/providers/ComposerServiceProvider.php
public function boot()
{
view()->composer(
'layouts.master', 'App\Http\ViewComposers\MasterComposer'
);
}
然后创建Composer类:
namespace App\Http\ViewComposers;
use Auth;
use App\Mail;
use Illuminate\View\View;
class MasterComposer
{
public function compose(View $view)
{
$mail_count = Mail::where('to_id', Auth::user()->id)
->where('read', 0)
->count('read');
$view->with('mail_count', $mail_count);
}
}
最后,您可以在主视图中使用{{$ mail_count}}来打印结果。因此,在这种情况下,它所做的是,每当您呈现views\layouts\master.blade.php
时,都会调用compose
方法并将$mail_count
附加到视图中。请确保使用视图的确切名称,我已使用layouts.master
(views / layouts / master.blade.php)作为此示例。
答案 1 :(得分:3)
您可以在laravel提供程序中使用它
转到AppServiceProvider.php
函数粘贴变量
boot
$mail_count = mail::where('to_id', '=', Auth::user()->id)->where('read', '=', '0')->count('read');
然后你可以选择其中一个选项:
1
view()->composer('*', function($view) use($mail_count){
$view->with('mail_count', $mail_count);
});
2
view()->share('mail_count', $mail_count);