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)); //getLastInsID获取最近插入的ID //添加供应商并组装供应商数据 $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; }
tp框架关联表实现修改:
控制器代码:
public function edit() { $this->view->engine->layout(false); //供应商 $storeModel = new StoreModel(); if (Request::isPost()) { return $storeModel->editData(input('param.')); } $data = $storeModel->where('id', input('param.id/d'))->find(); //银行卡 $UserBankcardsModel = new UserBankcardsModel(); //查询供应商表里的银行卡id $userbank = $UserBankcardsModel->where('id', $data['bankcards_id'])->find(); //在修改的时候 页面银行卡参数会出现为空的情况 如果他为空 则返回空 if (empty($userbank)) { $userbank = [ 'bank_name' => '', 'card_number' => '', 'account_bank' => '', 'account_name' => '', ]; } if (!$data || !$userbank) { return error_code(10002); } return $this->fetch('edit', ['info' => $data, 'bankcardsId' => $userbank]); }
模型层代码:
public function editData($data) { $result = ['status' => true, 'msg' => '保存成功', 'data' => '']; $validate = new Validate($this->rule, $this->msg); if (!empty($data['bank_name']) && !empty($data['card_number']) && !empty($data['account_bank']) && !empty($data['account_name'])) { $storeId = Store::where('id', '=', $data['id'])->field('bankcards_id')->find()->toArray(); //银行卡数据 $newData = [ 'bank_name' => $data['bank_name'], 'card_number' => $data['card_number'], 'account_bank' => $data['account_bank'], 'account_name' => $data['account_name'] ]; //供应商数据 $data = [ 'id' => $data['id'], 'store_name' => $data['store_name'], 'category' => $data['category'], 'mobile' => $data['mobile'], 'status' => $data['status'], 'audit' => $data['audit'], 'firm_name' => $data['firm_name'], 'address' => $data['address'], 'img' => $data['img'], 'name' => $data['name'], 'password' => $data['password'], 'url' => $data['status'], 'bankcards_id' => $storeId['bankcards_id'], ]; //修改银行卡数据之前先判断供应商所绑定的银行卡id == 0否,如果=0;进行添加银行卡,要不进行修改 if ($storeId['bankcards_id'] == 0) { $bandCardId = $this->getLastInsID(UserBankcardsModel::insert($newData)); //将成功绑定好的供应商所对应的银行卡id与对应的供应商进行绑定即可 $storeadd = Store::where(['id' => $data['id']])->update(['bankcards_id' => $bandCardId]); $storeadd->getLastSql(); } else { UserBankcardsModel::update($newData, ['id' => $storeId['bankcards_id']]); } //修改供应商数据 Store::update($data, ['id' => $data['id']]); if (!$validate->check($data)) { $result['status'] = false; $result['msg'] = $validate->getError(); } } else { //只修改供应商的数据 $this->allowField(true)->save($data, ['id' => $data['id']]); } return $result; }
修改前台页面展示:


成功的秘诀,在永不改变既定的目的~