Laravel 我想使用View::share共享Auth::user()

Laravel 我想使用View::share共享Auth::user(),laravel,Laravel,以下是我写的资料来源 app\Providers\AppServiceProvider.php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\Auth; class AppServiceProvider extends ServiceProvider { public

以下是我写的资料来源

app\Providers\AppServiceProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::share('user_id', Auth::user()->user_id);
    }
}
出现以下错误:

“正在尝试获取非对象的属性“user\u id”


当我在别处使用
Auth::user()->user_id
时,它显示正确。但不是在这里。原因是什么?

您的用户表中是否有一列名为“user\u id”或您是指用户表中的“id”列?如果您的意思是用户表id列,请将代码更新到下面

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::share('user_id', Auth::user()->id);
    }
}

我通过下面的链接找到了原因

我修改了源代码如下,它的工作

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        view()->composer('*', function ($view)
        {
            View::share('user_id', Auth::user()->user_id);
        }
    }
}

您可以使用Auth::id(),可能它在较旧版本的laravel中工作正常。“user_id”是我新创建的列。此外,如果我使用
Auth::user()->id
,我将得到一个“尝试获取非对象的属性'id'的错误”。检查您是否正在获取Auth对象。请尝试此代码在类开始之前添加“use Auth”,并在boot()内写入dd(Auth::user());检查是否返回了它。结果是“null”。但是,某些模型页面输出正确。