一对一关联
表 demo_users
定义关联
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;
});
...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。