一對一關聯
表 demo_users
id |
username |
password |
email |
1 |
tom |
123456 |
tom123@qq.com |
定義關聯
class User extends Model
{
protected $table = 'demo_users';
/*
* 若但願在User界面訪問到Profile的內容,則必須定義下面的關係
* 即:User hasOne Profile 【一個User 能夠有一個 Profile】
* (Profile::class,'user_id','id')
* (關聯模型,從表外鍵,主表主鍵)
* 注意:不管是主模型仍是從模型,其主外鍵定義都是同樣的
*/
public function profile(){
return $this->hasOne(Profile::class,'user_id','id');
}
}
控制器中訪問關聯表數據
// 在 User 控制器中展現 Profie 的數據
// Grid
$grid->column('profile.nick_name',__('NickName'));
$grid->column('profile.avatar_url',__('Avatar'));
// Show
$show = new Show(User::with('profile')->findOrFail($id));
...
$show->field('anyName',__('Nick Name'))->as(function (){
return $this->getRelation('profile')->nick_name;
});
$show->field('someName',__('Avatar'))->as(function (){
return $this->getRelation('profile')->avatar_url;
});
...
表 demo_profiles
定義關聯
class Profile extends Model
{
protected $table = 'demo_profiles';
/*
* 若但願在 Profile 界面訪問到 User 的內容,則必須定義下面的關係
* 即:Profile belongsTo User 【一個Profle 屬於 一個User】
* (User::class,'user_id','id')
* (關聯模型,從表外鍵,主表主鍵)
* 注意:不管是主模型仍是從模型,其主外鍵定義都是同樣的
*/
public function user(){
return $this->belongsTo(User::class,'user_id','id');
}
}
控制器中訪問關聯表數據
// 在 Profie 控制器中展現 User 的數據
// Grid
$grid->column('user.username', __('User Name'));
$grid->column('user.email', __('Email'));
// Show
$show = new Show(User::with('profile')->findOrFail($id));
...
$show->field('anyName', __('User name'))->as(function (){
return $this->getRelation('user')->username;
});
$show->field('someName', __('Email'))->as(function (){
return $this->getRelation('user')->email;
});
...