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; }
tp