2015-04-29 63 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

相關問題