Laravel-admin show grid 顯示關聯模型字段


  • usersModel定義如下:
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');
    }
}
  • userInfoModel定義如下:
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方法中顯示關聯模型字段:
$grid->column('profile.nickname', __('profile.nickname'));
$grid->column('profile.avatar', __('profile.avatar'))->image();
 
// ....
  • detail方法中顯示關聯模型字段:
// 這里嘗試跟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();
 
// ...
  • 效果如下

 

 

 

 

https://blog.csdn.net/ClassmateLin/article/details/104324557


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM