如何在 child class 中扩展 PHP Laravel 模型的可填写字段?
How to extend PHP Laravel model's fillable fields in a child class?
我尝试用其他一些字段扩展 extintig ˙PHP` Laravel 模型,但我没有找到正确的解决方案。我使用 PHP 7.1 和 Laravel 6.2
这是我的代码,解释了我想做什么。
原机型:
<?php
namespace App;
use App\Scopes\VersionControlScope;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $fillable = [
'product_id',
'name',
'unit',
// ...
}
// ... relations, custom complex functions are here
}
以及我想象的如何扩展原始模型:
<?php
namespace App;
class ProductBackup extends Product
{
protected $fillable = array_merge(
parent::$fillable,
[
'date_of_backup',
]
);
// ...
}
但现在我收到 Constant expression contains invalid operations
错误消息。
我能否在 child class 中以某种方式扩展我的原始模型的 $fillable
数组?
在您的子类构造函数中,您可以使用 Illuminate\Database\Eloquent\Concerns\GuardsAttributes
特征中的 mergeFillable
方法(每个 Eloquent 模型自动可用)。
/**
* Create a new Eloquent model instance.
*
* @param array $attributes
* @return void
*/
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->mergeFillable(['date_of_backup']);
}
我尝试用其他一些字段扩展 extintig ˙PHP` Laravel 模型,但我没有找到正确的解决方案。我使用 PHP 7.1 和 Laravel 6.2
这是我的代码,解释了我想做什么。
原机型:
<?php
namespace App;
use App\Scopes\VersionControlScope;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $fillable = [
'product_id',
'name',
'unit',
// ...
}
// ... relations, custom complex functions are here
}
以及我想象的如何扩展原始模型:
<?php
namespace App;
class ProductBackup extends Product
{
protected $fillable = array_merge(
parent::$fillable,
[
'date_of_backup',
]
);
// ...
}
但现在我收到 Constant expression contains invalid operations
错误消息。
我能否在 child class 中以某种方式扩展我的原始模型的 $fillable
数组?
在您的子类构造函数中,您可以使用 Illuminate\Database\Eloquent\Concerns\GuardsAttributes
特征中的 mergeFillable
方法(每个 Eloquent 模型自动可用)。
/**
* Create a new Eloquent model instance.
*
* @param array $attributes
* @return void
*/
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->mergeFillable(['date_of_backup']);
}