不允许更新laravel

时间:2018-05-23 08:15:09

标签: laravel eloquent

在laravel中向$fillable添加属性时,我们可以在Create / Update中进行质量分配,但我想在create中允许属性进行质量分配但不允许更新。现在我使用Updating Event来实现这一目标。还有更好的方法吗?

protected static function boot()
{
    static::updating(function ($product) {
        $product->price = $product->getOriginal('price');
    }
}

2 个答案:

答案 0 :(得分:1)

我会推荐Obeserver。因为它为您提供了更大的灵活性。

<?php

namespace App\Observers;

use App\User;

class UserObserver
{

    /**
     * Listen to the User updating event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function updating(User $user)
    {
      if($user->isDirty(['price'])){
        // it is updated return false.
       }

    }
}

答案 1 :(得分:0)

price删除$fillable属性,然后使用forceCreate()创建记录:

$product = Product::forceCreate([
    // ...
    'price' => 10.50,
];

这将允许您在创建时设置值,但是当您通过$product->fill()更新模型时,价格不会因为不可填写而改变。您可以随时更改价格值,直接省略质量分配:

$product->price = 11.50;
$product->save();