关联关系
一对一关系
users
表和上面的posts
表为一对一关联关系,通过posts.author_id
字段关联,users
表结构如下:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
模型定义为:
class User extends Model
{
}
class Post extends Model
{
public function author()
{
return $this->belongsTo(User::class, 'author_id');
}
}
那么可以用下面的方式显示post
所属的用户的详细:
$show->author('作者信息', function ($author) {
$author->setResource('/admin/users');
$author->id();
$author->name();
$author->email();
});
其中$author
对象也是Show
实例,同样可以使用上面的各种方法
注意:为了能够正常使用这个面板右上角的工具,必须用
setResource()
方法设置用户资源的url访问路径
一对多或多对多关系
一对多或多对多关系的关联数据会以Model-grid
的方式呈现,下面是简单的例子
posts
表和评论表comments
为一对多关系(一条post
有多条comments
),通过comments.post_id
字段关联
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`post_id` int(10) unsigned NOT NULL,
`content` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
模型定义为:
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
class Comment extends Model
{
}
那么评论的显示通过下面的代码实现:
$show->comments('评论', function ($comments) {
$comments->resource('/admin/comments');
$comments->id();
$comments->content()->limit(10);
$comments->created_at();
$comments->updated_at();
$comments->filter(function ($filter) {
$filter->like('content');
});
});
$comments
是一个Encore\Admin\Grid
实例,详细的使用方法可以参考model-grid
注意:为了能够正常使用这个数据表格的功能,必须用
resource()
方法设置comments
资源的url访问路径
当前内容版权归 laravel-admin.org 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 laravel-admin.org .