数据更新时出现QueryException错误

时间:2018-07-21 13:08:50

标签: laravel laravel-5 laravel-query-builder

进入数据库不更新数据,我听不懂我的问题,错误在下面

  

Illuminate \ Database \ QueryException(42S22)   SQLSTATE [42S22]:找不到列:1054“字段列表”中的未知列“ _method”(SQL:更新trades设置_method = PATCH,_token = AcbGEbEyNxX3e2RzRR2cb1SW6NDvkJuDqFevl0Mr,{{1} } = 1,exchange_id = 1,market_id = 45,symbol_id = 0,is_action =,tradedate = 5000,rate = hhhhhhhhh ,note = 2018-07-21 13:06:13其中updated_attrades = 33和user_idtrades不为null并且{{1 }}。user_id为空)

这是我的控制器

trades

这是我的edit.blade.php文件

deleted_at

这是我的create.blade.php文件

 public function edit($id)
{

    $trade = Trade::findOrFail($id);

    $exchanges = Exchange::pluck('exchange','id')->all();
    $markets = Market::pluck('market','id')->all();
    $symbols = Symbol::pluck('symbol','id')->all();
    $reasons = Reason::pluck('reason','id')->all();

    return view('member.add-single-trade.edit', compact('trade','reasons', 'exchanges', 'markets', 'symbols'));
}


public function update(Request $request, $id)
{        
    $input = $request->all();
    $tradeID= Auth::user()->trade($id)->update($input);
    $reasons=$request->input('reason');

    $data = [];
    foreach($reasons as $key => $value) {

        $data[] = ['reason_id' => $value];

    };
                                  $data = array(

                                    'reason_id' =>$reasons,
                                    'trade_id' => $tradeID->id,
                                  );


                                         $test['trade_id']= $tradeID->id;

    if($data > 0) {

        foreach ($data as $datum) {


            $tradeID->tradereason()->update(new TradeReason($datum));

        }
    }

}

2 个答案:

答案 0 :(得分:2)

您尚未包含模型代码(可能您正在使用$guarded = [];),但可能不是

$input = $request->all();

您应该使用:

$input = $request->except('_method');

这是因为使用_method时会在表单中添加额外的Form::model字段以通过HTTP动词方法,并且显然您的表中没有_method字段

编辑

如果您有更多字段,则可以包括更多要忽略的字段,例如:

$input = $request->except('_method', '_token');

或者,您只能使用您真正想要获取的获取字段,例如:

$input = $request->only('exchange_id', 'market_id');

(当然,您应该在上面添加更多字段-这仅是示例)

答案 1 :(得分:0)

您可以使用模型的$fillable属性来告诉ORM哪些属性(列)可以批量分配。通过update和create方法传递的任何其他字段都将被丢弃。 check at Laravel docs