我正在尝试更新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);
}
}
}
答案 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);