Laravel-admin一対一の詳細
一対一の関連
表demo_users
id
username
password
email
1
tom
123456
[email protected]
関連付けの定義
コントローラでの関連テーブルデータへのアクセス
表demo_profiles
id
user_id
nick_name
avatar_url
1
1
tom cat
http://.......
関連付けの定義
コントローラでの関連テーブルデータへのアクセス
表demo_users
id
username
password
1
tom
123456
[email protected]
関連付けの定義
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
id
user_id
nick_name
avatar_url
1
1
tom cat
http://.......
関連付けの定義
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;
});
...