Не разрешать обновлять атрибуты в laravel - PullRequest
0 голосов
/ 23 мая 2018

В laravel при добавлении атрибута к $fillable тогда мы можем массовое назначение как в Create / Update, но я хочу разрешить атрибуту массовое назначение в create, но не разрешить обновление.Теперь я использую Событие Обновления для достижения этой цели.Есть ли лучший способ?

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Удалить атрибут price из $fillable и использовать forceCreate() для создания записи:

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

Это позволит вам установить значение при создании, но при обновлении модели через $product->fill()цена не изменится, потому что она не заполняется.Вы всегда можете изменить значение цены, опуская массовое назначение:

$product->price = 11.50;
$product->save(); 
0 голосов
/ 23 мая 2018

Я бы порекомендовал 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.
       }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...