gdm*_*hon 7 php model eloquent laravel-5
我是新手laravel
,因此我的问题可能对某些人来说很奇怪.好吧,我的问题是如何在Laravel Model
类中编写一个实体,在迁移后不会在数据库中创建任何字段.例如
class JobseekerModel extends Model
{
use SoftDeletes;
protected $table='dbl_jobseekers';
protected $primaryKey='id';
protected $fillable=[
'FirstName',
'MiddleName',
'LastName',
'Dob',
'Education',
'DesireField',
'Skill',
'SpecialSkill',
'Experience',
'Location',
'HomeAddress',
'Salary',
'Comenteries',
'Resume'
];
protected $dates = ['deleted_at'];
}
Run Code Online (Sandbox Code Playgroud)
这是我的模型,现在我想在我的模型中添加另一个名为'PagedListSize'的属性,但我不想将其创建为数据库列.那我该怎么做?
例如,我熟悉使用NotMapped
属性.Net Framework
,这是写的
[NotMapped]
public int PagedListSize {set; get;}
Run Code Online (Sandbox Code Playgroud)
那么,我该怎么做呢.在laravel有没有办法做到这一点?我正在努力Laravel 5.4
您可以创建自定义Mutator来拥有那种自定义属性,而无需将它们映射到 Laravel 中的数据库字段。
class Tag extends Model
{
public function getFullNameAttribute()
{
return $this->first_name.' '.$this->last_name;
}
public function setFullNameAttribute($value)
{
list($this->first_name, $this->last_name) = explode(' ', $value);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以在初始化模型后像这样使用它:
$tag->full_name = "Christos Lytras";
echo $tag->first_name; // prints "Christos"
echo $tag->last_name; // prints "Lytras"
Run Code Online (Sandbox Code Playgroud)
这是一个修补程序截图:
在 Laravel 中做到这一点的最佳方法确实是通过自定义 Mutators。此外,可以将变异器配置为显示在模型的 json 或数组输出转储中。例如PagedListSize
我们可以有:
public functionGetPagedListSizeAttribute()
{
return #some evaluation;
}
protected $appends = array('pagedListSize');
Run Code Online (Sandbox Code Playgroud)
这样,pagedListSize
不仅可以直接作为字段使用,而且在模型序列化为 Json 或数组时也可以使用。