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

在每次加载页面时在Laravel中运行命令,laravel,laravel-5,laravel-5.1,Laravel,Laravel 5,Laravel 5.1,我想在每次加载页面时加载一个带有Laravel的命令 $mail_count = mail::where('to_id', '=', Auth::user()->id)->where('read', '=', '0')->count('read'); 最好的方法是什么?然后需要将结果输出到页面的主模板中。您可以在laravel提供程序中使用它 转到boot函数粘贴变量中的AppServiceProvider.php $mail_count = mail::where('to_

我想在每次加载页面时加载一个带有Laravel的命令

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

最好的方法是什么?然后需要将结果输出到页面的主模板中。

您可以在laravel提供程序中使用它 转到
boot
函数粘贴变量中的
AppServiceProvider.php

$mail_count = mail::where('to_id', '=', Auth::user()->id)->where('read', '=', '0')->count('read');
然后,您可以使用以下选项之一执行此操作:

一,

二,


将视图生成器用于主模板,例如:

// 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\u count}}来打印结果。因此,在本例中,它所做的是,每当呈现
views\layouts\master.blade.php
时,将调用
compose
方法,并将
$mail\u count
附加到视图中。确保使用视图的确切名称,我在本例中使用了
layouts.master
(views/layouts/master.blade.php)。

最好将其放入控制器的构造函数中。哪个控制器?我需要把它放进全部还是只放在主控制器上?
// app/providers/ComposerServiceProvider.php
public function boot()
{
    view()->composer(
        'layouts.master', 'App\Http\ViewComposers\MasterComposer'
    );
}
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);
    }
}