В 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, он выводит "Нет",
Причина этого в том, что 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
работает для аксессоров, но только когда вы создаете аксессор для существующего свойства. Например:getMicrochipAttribute
(microchip
существует? да, поэтому введите его значение).getFooBarAttribute
(foo_bar
существует? нет, поэтому не вводить ничего).