更新除一个字段以外的所有字段

时间:2019-02-08 18:51:12

标签: laravel

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.');
        } 
    }

我想在数据库中已存在代码的情况下更新除代码外的所有其他字段。我该如何解决,请提供一些解决方案。谢谢!

4 个答案:

答案 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以获得更多信息