tp框架关联表实现添加
设计表:
分为供应商 和 银行卡表:
(注:如果在实现添加的时候,根据产品提供需求实现 没有特定规定可以分为两个添加页面去实现 简单方便,非规定一个页面实现添加也可以咯 接下来 开始进入海洋的世界~~~~~~)
产品需求同页面实现两表添加:
控制器代码:
/** * 添加 * @return array|mixed */ public function add() { $this->view->engine->layout(false); $storeModel = new StoreModel(); if (Request::isPost()) { return $storeModel->addData(input('param.')); } return $this->fetch('add'); }
模型层代码:
/** * 供应商添加 * @param array $data * @return array */ public function addData($data) { $result = ['status' => true, 'msg' => '保存成功', 'data' => '']; $validate = new Validate($this->rule, $this->msg); //银行卡数据 $newData = [ 'bank_name' => $data['bank_name'], 'card_number' => $data['card_number'], 'account_bank' => $data['account_bank'], 'account_name' => $data['account_name'] ];
//银行卡表:只添加银行卡数据 在添加完之后银行卡主键id就有啦,在这个时候 可以把拿到的银行卡主键id 返回给供应商表里的银行卡id
//如果在添加供应商信息时,没有给银行卡字段添加 这个时候就需要做出判断 不能让给银行卡添加一条空数据的 if (!empty($data['bank_name']) && !empty($data['card_number']) && !empty($data['account_bank']) && !empty($data['account_name'])) { //添加绑定銀行卡数据 并获取当前银行卡添加数据的主键id $storeId = $this->getLastInsID(UserBankcardsModel::insert($newData)); //添加供应商并组装供应商数据 $data = [ 'store_name' => $data['store_name'], 'category' => $data['category'], 'mobile' => $data['mobile'], 'status' => $data['status'], 'audit' => $data['audit'], 'firm_name' => $data['firm_name'], 'firm_address' => $data['firm_address'], 'img' => $data['img'], 'name' => $data['name'], 'password' => $data['password'], 'url' => $data['status'], 'bankcards_id' => $storeId, ]; $storeAdd = Store::insert($data); if (!$validate->check($data)) { $result['status'] = false; $result['msg'] = $validate->getError(); } } else { //只添加供应商的数据 $storeAdd = $this->allowField(true)->save($data); } return $result; }