Php 如何使用访问者从二进制字段创建文本字段?
在Laravel5中,我有一个称为“microchip”的二进制字段,这是一个二进制字段。我想构建一个访问器函数,如果原始字段分别包含1或0,它将输出“yes”或“no”。我有这个:Php 如何使用访问者从二进制字段创建文本字段?,php,laravel,accessor,Php,Laravel,Accessor,在Laravel5中,我有一个称为“microchip”的二进制字段,这是一个二进制字段。我想构建一个访问器函数,如果原始字段分别包含1或0,它将输出“yes”或“no”。我有这个: public function getMicrochipTextAttribute($input) { switch($input) { case 0: return "No"; break; case 1:
public function getMicrochipTextAttribute($input)
{
switch($input)
{
case 0:
return "No";
break;
case 1:
return "Yes";
break;
}
}
不幸的是,当我使用$model->microchip_文本时,无论$input的内容如何,它都会返回“No”。无论$input包含1还是0,它都会输出“No.”原因是Eloquent不知道您使用的是什么,
$input
,因为您正在为新属性而不是现有属性创建访问器。相反,请尝试以下方法:
public function getMicrochipTextAttribute()
{
switch($this->attributes['microchip'])
{
case 0:
return "No";
break;
case 1:
return "Yes";
break;
}
}
或更简短的版本:
public function getMicrochipTextAttribute()
{
return $this->attributes['microchip'] ? 'Yes' : 'No';
}
非常感谢。这就成功了。因此,我假设使用$input作为参数是为mutator保留的做法,而不是为accessor保留的做法,那么,@KinsDotNet
$input
适用于accessor,但只有在为现有属性创建accessor时才有效。e、 g.:getMicrochipAttribute
(microchip
存在?是的,所以注入它的值)getFooBarAttribute
(foo\u bar
存在?不存在,因此不注入任何内容)。