如何使用访问器从二进制字段创建文本字段?
How can I use an accessor to create a text field from a binary field?
在 Laravel 5 中,我有一个名为 'microchip,' 的二进制字段,它是一个二进制字段。如果原始字段分别包含 1 或 0,我想构建一个输出 "yes," 或 "no," 的访问器函数。我有这个:
public function getMicrochipTextAttribute($input)
{
switch($input)
{
case 0:
return "No";
break;
case 1:
return "Yes";
break;
}
}
不幸的是,当我使用 $model->microchip_text 时,无论 $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';
}
在 Laravel 5 中,我有一个名为 'microchip,' 的二进制字段,它是一个二进制字段。如果原始字段分别包含 1 或 0,我想构建一个输出 "yes," 或 "no," 的访问器函数。我有这个:
public function getMicrochipTextAttribute($input)
{
switch($input)
{
case 0:
return "No";
break;
case 1:
return "Yes";
break;
}
}
不幸的是,当我使用 $model->microchip_text 时,无论 $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';
}