我在数据库中有3个不同的字段:city
,state
,country
。如何在Eloquent中定义另一个属性以从这3个字段中返回一个字符串?
第一种方法,但它不起作用:
protected $address = "";
public function getAddress() : string {
return $this->city . $this->state . " - " . $this->country;
}
答案 0 :(得分:10)
如果您想要一个未在模型中定义的新属性,则需要将该属性附加到模型中。
/**
* 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;
}
答案 1 :(得分:0)
将<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="200dp"
android:inputType="textPersonName"
android:padding="10dp"
android:text="" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/keyboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="keyboard" />
<Button
android:id="@+id/camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Camera" />
</LinearLayout>
<LinearLayout
android:id="@+id/cameraLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/take"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Take" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridLayout
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="5">
</GridLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>
添加到方法名称以使其正常工作:
Attribute
https://laravel.com/docs/5.3/eloquent-mutators#defining-an-accessor