Laravel模型 追加属性append的使用
1、如果你的需要的数据,是根据数据库中的某个值,计算出来。可以appends中增加该属性,再定义一个访问器返回对应的结果
注:定义在模型类上,对所有的模型数据都会增加该属性。
class User extends Model
{
protected $appends = ['is_adult'];
public function getIsAdultAttribute()
{
return $this->attribute['age'] > 18;
}
}
2、如果只对部分数据需要的属性,可以在取出数据库值后再append
//单个对象
$user = User::first();
$user->append('is_adult');
//多个对象的集合
<span class="token variable">$user</span> <span class="token operator">=</span> <span class="token scope">User<span class="token punctuation">::</span></span><span class="token function">paginate</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable"> $user</span><span class="token operator">-</span><span class="tok
定义一个访问器#
若要定义一个访问器,则须在你的模型上创建一个 getFooAttribute 方法。要访问的 Foo 字段需使用「驼峰式」来命名。在这个例子中,我们将为 first_name 属性定义一个访问器。当 Eloquent 尝试获取 first_name 的值时,将会自动调用此访问器:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* 获取用户的名字。
*
* @param string $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}
如你所见,字段的原始值被传递到访问器中,允许你对它进行处理并返回结果。如果想获取被修改后的值,你可以在模型实例上访问 first_name 属性:
$user = App\User::find(1);
$firstName = $user->first_name;