Есть два способа, первый - использовать метод загрузки напрямую (предпочтительнее для небольших изменений в модели, как в вашем вопросе)
Метод 1:
мы можем напрямую использовать метод загрузки,
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Mymodel extends Model
{
public static function boot()
{
parent::boot();
static::saving(function ($model) {
// Remember that $model here is an instance of MyModel
$model->firstName = strtolower($model->firstName);
$model->lastName = strtolower($model->lastName);
$model->userName = strtolower($model->userName);
// ...... other attributes
});
}
}
Метод 2:
Таким образом, мы можем использовать здесь простую черту с простым методом для генерации strtolower () для строки. предпочтительнее, когда вам нужно внести большие изменения в модель при выполнении операций с моделью, таких как сохранение, создание et c. Или даже если вы хотите использовать одно и то же свойство в нескольких моделях.
Создайте трейт MyStrtolower
<?php
namespace App\Traits;
trait MyStrtolower
{
public function mystrtolower($string)
{
return strtolower($string);
}
}
Теперь мы можем прикрепить этот трейт к любому классу, который мы хотим иметь с помощью метода mystrtolower.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Traits\MyStrtolower;
class Mymodel extends Model
{
use MyStrtolower; // Attach the MyStrtolower trait to the model
public static function boot()
{
parent::boot();
static::saving(function ($model) {
// Remember that $model here is an instance of MyModel
$model->firstName = $model->mystrtolower($model->firstName);
$model->lastName = $model->mystrtolower($model->lastName);
$model->userName = $model->mystrtolower($model->userName);
// ...... other attributes
});
}
}
Если вы не хотите повторять все эти строки кода для каждой модели, которую вы создаете, сделайте свойство настраиваемым с помощью абстрактных методов, чтобы вы могли динамически передавать имена атрибутов, для которых вы хотите использовать строчную строку, например, employee_name
is Employee
Model и user_name
in User
Модель.