无法使用laravel添加请求中的数据

时间:2016-02-13 16:12:59

标签: php laravel eloquent

我有这个功能:

public function store(Requests\OfferRequest $request)
    {

            $offer = new Offer($request->all());

            Auth::user()->offer()->save($offer);

            $maxoffer =  Maxoffer::where('article_id', $request->input('article_id'))
                        ->where('start', $request->input('start'))->get();

   if($maxoffer == null)
    {
      Auth::user()->maxoffer()->create($request->all());
    }
    else
    {
      if($maxoffer->price < $request->input('price'))
      {
        $newOffer = Auth::user()->maxoffer()
                    ->where('id', $maxoffer->id)
                    ->update(['price'=>$request->input('price')]);
      }
    }

        Alert::success('Offer is succesfully added!', 'Good job!')->persistent("Close");

        return Redirect::back();

    }

但我无法添加数据,因为我得到了这个:

  

OffersController.php第63行中的ErrorException:未定义的属性:   Illuminate \ Database \ Eloquent \ Collection :: $ price in   在HandleExceptions-&gt; handleError('8'处的OffersController.php第63行,   'Undefined property:Illuminate \ Database \ Eloquent \ Collection :: $ price',   'C:\ wamp \ www \ bidbook \ app \ Http \ Controllers \ OffersController.php','63',   array('request'=&gt; object(OfferRequest),'offer'=&gt; object(Offer),   'maxoffer'=&gt;对象(Collection)))在OffersController.php第63行

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

以下内容返回一个集合:

$maxoffer =  Maxoffer::where('article_id', $request->input('article_id'))
                    ->where('start', $request->input('start'))
                    ->get(); // Returns a collection

所以你得到错误。只需将get更改为first,例如:

$maxoffer =  Maxoffer::where('article_id', $request->input('article_id'))
                    ->where('start', $request->input('start'))
                    ->first(); // Returns a single Eloquent Object

现在,这将返回一个Eloquent Model对象,如果找到任何模型,它将起作用。

答案 1 :(得分:0)

试试这个

 $maxoffer =  Maxoffer::where('article_id', $request->['article_id'])
                    ->where('start', $request->['start'])->get();