我有以下用户模型
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name', 'last_name', 'company', 'mobile', 'mobile_share', 'dob', 'email', 'password', 'active'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function teams()
{
return $this->belongsToMany('App\Team', 'team_user', 'team_id', 'user_id');
}
}
使用有说服力的查询时,如果行中的mobile
等于mobile_share
,是否可以自动返回空的0
数据?
答案 0 :(得分:2)
是的,accessor完成了这项工作。
public function getMobileAttribute()
{
if ($this->mobile_share !== 0 && isset($this->attributes['mobile'])) {
return $this->attributes['mobile'];
}
}
然后用它轻松调用。
$user->mobile;
答案 1 :(得分:1)
嗯,所有答案都应该有效,但你可以内联它! :
public function getMobileAttribute($mobile)
{
return $this->mobile_share ? $mobile : null;
}
有关详细说明:
在getter函数中传递$ mobile允许获取当前mobile
属性,所以基本上,如果$ this-&gt; mobile_share!= 0并且不为null则返回移动设备,否则返回null < / p>
答案 2 :(得分:-2)
我有一个可以满足您需求的解决方案 在您的模型中,定义一个getter:
public getMobileAttribute($value)
{
if (!$this->mobile_share) {
return null;
}
return $value;
}