我有这个路由:
Route::get('/item/{item_id?}',['uses'=>'ItemController@get_item_view']);
如果没有给出项目ID,我想重定向到第一项。
public function get_item_view($id = null)
{
if($id == null)
{
#This doesnt work
$selected_item = Item::where('item_id',Auth::user()->item_id)->first();
}
else
{
#This works
$selected_item = Item::where('id',$id)
->where('item_id',Auth::user()->item_id)
->first();
}
if($selected_item === null)
{
return redirect('/');
}
return view('auth.forms.item')->with('item',$selected_item);
}
如果我引入了一个ID(www.myproject.com/item/2),该页面可以正常运行,但如果我不这样做,并且只是为了生成页面而尝试获取列表中的第一个。我希望www.myproject.com/item给我第一个项目。
这是我得到的错误:
尝试获取非对象的属性(查看: /var/www/myproject/resources/views/auth/forms/item.blade.php)
当我在两种情况下使用dd($selected_item)
时,我得到了相同类型的对象。我不知道为什么一个人在工作而另一个人不在。
答案 0 :(得分:1)
如果您没有提供商品ID,那么它将为空,
$selected_item = Item::where('item_id',null)->first();
如果你想列出第一项只做
if($id == null)
{
#This doesnt work
$selected_item = Item::all()->first();
}
答案 1 :(得分:0)
确保Auth::user()->item_id
有值。错误似乎是由它产生的。
您可以dd(Auth::user()->item_id)
进行检查