2015-04-29 19 views
0

在Laravel 5中,我有一个名为'microchip'的二进制字段,它是一个二进制字段。如果原始字段分别包含1或0,我想构建一个输出“是”或“否”的访问器函数。我有这样的:如何使用存取器从二进制字段创建文本字段?

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

不幸的是,当我使用$模型 - > microchip_text,它返回“不,”不管$输入的内容。无论$ input是否包含1或0,它都会输出“No.”

回答

2

原因是因为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'; 
} 
+0

谢谢!这个伎俩。那么,假设使用$ input作为参数是一种为增变器而不是访问器保留的做法,我是否会正确? – KinsDotNet

+0

@KinsDotNet'$ input'适用于访问器,但只适用于为现有属性创建访问器的情况。例如:'getMicrochipAttribute'('microchip'存在?是的,所以注入它的值)。 'getFooBarAttribute'('foo_bar'存在吗?不,所以什么都不要注入)。 – Ravan

+0

谢谢你,亲切的先生。 – KinsDotNet

相关问题