Как я могу использовать аксессор для создания текстового поля из двоичного поля?

В Laravel 5 у меня есть двоичное поле, называемое «микрочип», которое является двоичным полем. Я хотел бы создать функцию доступа, которая выводит «да» или «нет», если исходное поле содержит 1 или 0 соответственно. У меня есть это:

    public function getMicrochipTextAttribute($input)
{
switch($input)
{
case 0:
return "No";
break;
case 1:
return "Yes";
break;
}
}

К сожалению, когда я использую $ model-> microchip_text, он возвращает «Нет», независимо от содержимого ввода $. Независимо от того, содержит ли $ input значение 1 или 0, он выводит «Нет».

0

Решение

Причина в том, что 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';
}
2

Другие решения

Других решений пока нет …