我这里有一个laravel模型,有5列。Id_profile,first_name,last_name,dbo和gender。Gender是数据库上的一个int。它接收0,1或2。
0为男性
1为女性
2为其他
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Enums\GenderEnum;
class Profile extends Model
{
use HasFactory;
protected $table = 'profile';
protected $fillable = ['id_profile', 'first_name', 'last_name', 'dbo', 'gender'];
protected $appends = ['gender_name'];
protected $dates = ['dbo'];
protected $casts = ['dbo' => 'datetime:d/m/Y'];
protected $primaryKey = 'id_profile';
public $timestamps = false;
public function getGenderNameAttribute($gender)
{
switch ($gender) {
case '0':
return 'Male';
case '1':
return 'Female';
case '2':
return 'Other';
}
}
}
我想返回模型的性别编号和新字段gender_name及其描述。
我不知道如何参数化一个函数来实现这一点,我用appends变量和getGenderNameAttribute函数尝试了一下。
如何将gender_name添加到模型结果中?
1条答案
按热度按时间wlwcrazw1#
看起来你使用的是laravel 8,并且你正在定义一个访问器,如果你的列实际上是
gender
,你需要改变它的值:通过这个访问,或者现在你有了属性
gender_name
,你可以通过以下方式访问你的模型: