首页 > 其他 > 详细

laravel-admin select关联

时间:2020-04-08 15:12:54      阅读:140      评论:0      收藏:0      [点我收藏+]

laravel-admin中如果两个表数据有关联 这时该如何在界面上体现 以下面啊两个数据表为例

CREATE TABLE `equipment` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB 
CHARSET=utf8mb4

CREATE TABLE `item` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `eid` int(10) unsigned DEFAULT NULL COMMENT 对应设备id,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `deleted_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB
CHARSET=utf8mb4

一个设备表  一个为设备项目表  外键为eid

这时用自动生成的表单  bid这一项默认为一个input表单 我们的目的是把bid作为select表单的格式来展示以及操作

首先 在item的model里面加上模型关联  如何关联模型详见laravel文档中的orm部分

  public function equipment()
  {
      return $this->belongsTo(Equipment::class, eid, id);
  }

第二步 在item的控制器的detail和grid方法中设置bid字段 让其显示对应的equipment的name值而不是原始bid的值  使用equipment.name

    protected function grid()
    {
        $grid = new Grid(new Item());

        $grid->column(id, __(Id));
        $grid->column(name, __(项目名称));
        $grid->column(equipment.name, __(所属设备));

        return $grid;
    }

    /**
     * Make a show builder.
     *
     * @param mixed $id
     * @return Show
     */
    protected function detail($id)
    {
        $show = new Show(Item::findOrFail($id));

        $show->field(id, __(Id));
        $show->field(name, __(项目名称));
        $show->field(equipment.name, __(所属设备));

        return $show;
    }

第三步 写一个equipment的数据接口来给item内容编辑时提供equipment的数据  (equipment控制器)

    public function api(){
        $data = Equipment::select(id,name as text)->get();
        return response()->json($data);
    }

并且加上路由(add/admin/route.php)

  $router->any(equipment/api, EquipmentController@api);

再把item控制器中略作修改

protected function form()
    {
        $form = new Form(new Item());

        $form->text(name, __(项目名称));
        $form->select(eid, __(所属设备))->options(/admin/equipment/api);

        return $form;
    }

option中为接口路径

此时item的编辑页中select下拉菜单就生成了 并且有了自动选中的功能

 

laravel-admin select关联

原文:https://www.cnblogs.com/zwsblogs/p/12659580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!