无法使用first()方法从数据库中检索数据

时间:2017-02-02 08:31:18

标签: php laravel

我有这个路由:

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)时,我得到了相同类型的对象。我不知道为什么一个人在工作而另一个人不在。

2 个答案:

答案 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)进行检查