我的laravel控制器中有如下所示的多种方法:
public function daily(){
$sites = Site::all()->where('owner_id', '==', Auth::user()->owner_id);
return view('backend.daily',compact('sites'));
}
public function weekly(){
$sites = Site::all()->where('owner_id', '==', Auth::user()->owner_id);
return view('backend.weekly',compact('sites'));
}
public function yearly(){
$sites = Site::all()->where('owner_id', '==', Auth::user()->owner_id);
return view('backend.yearly',compact('sites'));
}
...
我在控制器构造函数中使用了它:
public function __construct() {
$sites = Site::all()->where('owner_id', '==', Auth::user()->owner_id);
View::share('sites', $sites);
}
并在boot()方法中的AppserviceProvider中使用,但这不起作用并出现以下错误:
"Trying to get property 'owner_id' of non-object"
正常使用时没有错误!
在每种方法中,我都使用了一个名为$ sites的变量,但在多个视图中使用了该变量,我想一次使用$ sites,而我的代码也希望这样简短一些:
public function daily(){
return view('backend.daily',compact('sites'));
}
public function weekly(){
return view('backend.weekly',compact('sites'));
}
public function yearly(){
return view('backend.yearly',compact('sites'));
}
...
我该如何实现?
答案 0 :(得分:0)
尝试一下:
optional(Auth::user())->owner_id
如果用户未登录,则可能无法从数据库中获取网站。