2016-10-06 4 views
2

У меня есть 3 различных поля в этой базе:, state, country. Как определить другой атрибут в Eloquent, чтобы вернуть одну строку из этих трех полей?Определить пользовательские атрибуты в Eloquent

Первый подход, но он не работает:

protected $address = ""; 

public function getAddress() : string { 
    return $this->city . $this->state . " - " . $this->country; 
} 

ответ

9

Если вы хотите новый атрибут который не определен в модели, вам нужно добавить этот атрибут к своей модели.

/** 
* The accessors to append to the model's array form. 
* 
* @var array 
*/ 
protected $appends = ['address']; 

и определить свой метод атрибута:

/** 
* Get the address. 
* 
* @return string 
*/ 
public function getAddressAttribute() 
{ 
    return $this->city . $this->state . " - " . $this->country; 
} 
+0

Это работает !!!!!!! – ln9187

0

Добавить Attribute с именем метода, чтобы сделать его работу:

public function getAddressAttribute() 
{ 
    return $this->city.$this->state.' - '.$this->country; 
} 

https://laravel.com/docs/5.3/eloquent-mutators#defining-an-accessor

+0

Это для атрибутов уже отображенных в таблице базы данных, хотя. Он ничего не возвращает, когда я вызываю '$ this-> address' – ln9187

Смежные вопросы