创建三表,用来调用,这里用个商品购物的案例来做;
1,购物车表:
DROP TABLE IF EXISTS `bk_car`;
create table `bk_car`(
`id`mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
`goodid` mediumint(9) NOT NULL comment'商品id',
`sizeid` mediumint(9) NOT NULL comment'规格id',
`number` int(9) NOT NULL comment'商品数量',
`allprice` int(9) NOT NULL comment'总金额',
`user_id` mediumint(9) NOT NULL comment'用户id',
PRIMARY KEY(`id`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
2,商品表:
CREATE TABLE IF NOT EXISTS `bk_commondity` (
`id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
`title` char(60) NOT NULL COMMENT '商品标题',
`price` int(9) NOT NULL COMMENT '价格',
`url` char(120) NOT NULL COMMENT '图片',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
3,规格表:
CREATE TABLE IF NOT EXISTS `bk_size` (
`id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
`text` char(60) NOT NULL COMMENT '规格',
`price` int(9) NOT NULL COMMENT '图片',
`url` char(120) NOT NULL COMMENT '价格',
`commondityid` mediumint(9) comment'商品id',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
三个表要做到彼此的关联,也就是一对多的关系,
购物车表中商品goodid对应商品表中的id,
购物车中规格sizeid对应规格表中的id,
其实还要对应用户id,这是用户操作要用到的,
所以,先在后台创建一个上传商品的表单提交:
<?php
namespace app\admin\controller;
use app\admin\model\Commondity as CommondityModel;
use app\admin\controller\Common;
class Commondity extends Common{
public function lst(){
$kelures=db('commondity')->order('id desc')->paginate(3);
$this->assign('kelures',$kelures);
return view();
}
public function edit(){
if(request()->isPost()){
$data=input('post.');
$add=new CommondityModel();
$validate = \think\Loader::validate('Commondity');
if(!$validate->scene('edit')->check($data)){
$this->error($validate->getError());
}
$save=$add->save($data,['id'=>$data['id']]);
if($save){
$this->success('添加成功',url('lst'));
}else{
$this->error();
}
}
$kelures=db('commondity')->find(input('id'));
$this->assign('kelures',$kelures);
return view();
}
public function add(){
if(request()->isPost()){
$data=input('post.');
if(!$validate->scene('add')->check($data)){
$this->error($validate->getError());
}
//添加商品
$add=db('commondity')->insert($data);
if($add){
$this->success('添加成功',url('lst'));
}else{
$this->error();
}
}
return view();
}
public function del(){
//删除
$del=db('commondity')->delete(input('id'));
if($del){
$this->success('删除成功',url('lst'));
}else{
$this->error();
}
}
}
模板和验证,模型就不写出来了,上传了一些产品后就可以调用了
$id=input('param.id');
$data=Db::name('car')->alias('c')
->join('__COMMONDITY__ com','c.goodid=com.id ','LEFT')
->join('__SIZE__ s','c.sizeid=s.id','LEFT')
->where(['c.user_id'=>$id])
->field('c.id,c.number,com.price,com.url,com.title,s.text,s.price as size_price')->select();