public function update(Request $request, $id)
{
$house = House::find($id);
$house->name = $request->name;
$house->code = $request->code;
$house->description = $request->description;
$house->address = $request->address;
$house->owner_name = $request->owner_name;
$house->manager_name = $request->manager_name;
if($house->update()){
return redirect()->route('houses')
->with('alert.status', 'success')
->with('alert.message', 'Successfully Updated.');
}
else{
return redirect()->route('houses')
->with('alert.status', 'danger')
->with('alert.message', 'Try Again.');
}
}
我想在数据库中已存在代码的情况下更新除代码外的所有其他字段。我该如何解决,请提供一些解决方案。谢谢!
答案 0 :(得分:6)
您可以使用 null合并运算符(在PHP版本7中可用)。
简而言之,您可以这样做:
public function update(Request $request, $id)
{
$house = House::find($id);
$house->code = $house->code ?? $request->code;
$house->save();
}
如果 $ house-> code 与null不同,则在不使用 $ request-> code 时将使用此值。
https://www.tutorialspoint.com/php7/php7_coalescing_operator.htm
答案 1 :(得分:0)
使用if
:
public function update(Request $request, $id)
{
$house = House::find($id);
$house->name = $request->name;
if($house->code == NULL)
$house->code = $request->code;
$house->description = $request->description;
$house->address = $request->address;
$house->owner_name = $request->owner_name;
$house->manager_name = $request->manager_name;
$house->save();
if($house->update()){
return redirect()->route('houses')
->with('alert.status', 'success')
->with('alert.message', 'Successfully Updated.');
}
else{
return redirect()->route('houses')
->with('alert.status', 'danger')
->with('alert.message', 'Try Again.');
}
}
进行所有这些更改后,应使用save()
方法。
答案 2 :(得分:0)
在三元条件下这样做:
public function update(Request $request, $id)
{
$house = House::find($id);
$house->code = !empty($house->code) && $house->code!= NULL ? $house->code : $request->code;
}
答案 3 :(得分:0)
您可以像下面在Eloquent: Mutators
模型上那样,通过House
检查数据库中是否存在代码
class House extends Model
{
//your codes
public function setCodeAtrribute($value)
{
if ($this->attributes["code"] != null) $this->attributes["code"] = $value
}
}
您还可以检查here以获得更多信息