调用成员函数phone()时为null

问题描述 投票:0回答:1

我正在尝试使用一对一关系存储电话记录。

public function store(Request $request) {

    $user= auth()->user(); 

    $phone= new Phone();

    $phone->cellno= request('cellno');

    $user->phone()->save($phone); 
    return redirect('/phones');
}

screenshot

php laravel-5.7
1个回答
0
投票

documentation中指示了检索身份验证用户的推荐方法。

行:

$user = auth()->user(); 

应该是:

$user = Auth::user();

并且不要忘记使用Auth类:

use Illuminate\Support\Facades\Auth;

说明:

auth()user()方法在您当前的上下文中不可用,所以这就是为什么如果没有找到$user就是null的原因。

编辑:

如果未对任何用户进行身份验证,身份验证也将返回null,您必须遵循以下提供的文档来实现它。然后,您可以secure your Routes

基本上,您有两个选择:

a)在路由说明中添加中间件:

Route::resource('phones' , 'PhoneController')->->middleware('auth');

b)将中间件添加到类的构造中(建议用于控制器)

public function __construct()
{
    $this->middleware('auth');
}

此后,如果没有经过身份验证的用户,则访问将受到限制。

© www.soinside.com 2019 - 2024. All rights reserved.