class UsersModel extends Authenticatable implements JWTSubject
{
use Notifiable;
public $timestamps = true;
protected $table = 'users';
/**
* @var array
*/
protected $fillable = [
'name', 'password',
];
/**
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
protected $with = [
'profile'
];
/**
* @return mixed
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* @return array
*/
public function getJWTCustomClaims()
{
return [];
}
// 关联用户详情表
public function profile()
{
return $this->hasOne(UserInfoModel::class, 'user_id', 'id');
}
}
class UserInfoModel extends Model
{
protected $table = 'user_info';
public $timestamps = false;
protected $fillable = ['user_id', 'nickname', 'avatar', 'point', 'sex', 'mobile', 'truename', 'birthday', 'email',
'email_verified', 'email_verified_at', 'register_time'];
// 关联用户表
public function user()
{
return $this->belongsTo(UsersModel::class, 'user_id', 'id');
}
}
$grid->column('profile.nickname', __('profile.nickname'));
$grid->column('profile.avatar', __('profile.avatar'))->image();
// ....
// 这里尝试跟grid中一样通过$show->field('profile.nickname')操作,发现会将profile中所有数据输出为一行。
$show->field('nickname', __('profile.nickname'))->as(function (){
return $this->profile->nickname;
});
$show->field('avatar', __('profile.avatar'))->as(function (){
return $this->profile->avatar;
})->image();
// ...
标签: laravel