布尔更新方法时出错

时间:2018-07-26 08:53:48

标签: laravel laravel-query-builder

我正在尝试更新Laravel中的方法,但错误是:

  

“在布尔值上调用成员函数tradereason()”

我也检查了与其他人问的相同问题,但我的过程有很多不同。我有很多桌子。

让我告诉我我的create代码和update方法编码。

创建方法代码:

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

    //Loop for creating KEY as Value
    $data = [];

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

    if( $data > 0 ) {
        foreach ($data as $datum) {
            $tradeID->tradereason()->save(new TradeReason($datum));
        }
    }
}

这是我的 update 方法的练习代码:

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

    $data = [];

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

    if( $data > 0 ) {
        foreach ($data as $datum) {
            $tradeID->tradereason()->whereId($id)->first()->update($datum);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

在Builder上调用update会返回'int'。在模型上调用update返回'bool'。他们不返回Model实例。

// bool
$tradeID= Auth::user()->trade()->whereId($id)->first()->update($input);

模型实例将是first调用返回的结果:

$tradeID = Auth::user()->trade()->whereId($id)->first(); // assuming it finds a record

您可以对其进行更新,可以在foreach循环中使用它。

答案 1 :(得分:0)

update返回一个布尔值。因此,请勿用$tradeID的结果覆盖update

$tradeID = Auth::user()->trade()->whereId($id)->first();
$tradeID->update($input);