在每个页面加载时在Laravel中运行命令

Kie*_*ley 2 laravel laravel-5 laravel-5.1

我想在每个页面加载时加载Laravel命令;

$mail_count = mail::where('to_id', '=', Auth::user()->id)->where('read', '=', '0')->count('read');
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?然后,这需要在页面的主模板中输出结果.

The*_*pha 7

使用视图编辑器作为主模板,例如:

// app/providers/ComposerServiceProvider.php
public function boot()
{
    view()->composer(
        'layouts.master', 'App\Http\ViewComposers\MasterComposer'
    );
}
Run Code Online (Sandbox Code Playgroud)

然后创建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);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,您可以在主视图中使用{{$ mail_count}}来打印结果.所以,在这种情况下,它正在做的是,每当你views\layouts\master.blade.php将被渲染时,compose方法将被调用$mail_count并将被附加到视图中.确保使用视图的确切名称,我已经使用了layouts.master(views/layouts/master.blade.php)这个例子.