Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用访问者从二进制字段创建文本字段?_Php_Laravel_Accessor - Fatal编程技术网

Php 如何使用访问者从二进制字段创建文本字段?

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:

在Laravel5中,我有一个称为“microchip”的二进制字段,这是一个二进制字段。我想构建一个访问器函数,如果原始字段分别包含1或0,它将输出“yes”或“no”。我有这个:

    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
存在?不存在,因此不注入任何内容)。