思考:如果我们需要跟模型打交道,其底层是和数据库打交道.如何配置数据库信息?
数据库配置
定义模型
思考:
- 模型写在哪里?
- 模型的文件的名称如何命名?
需要定义模型的文件的名称,必须和表名一致.
例如我们数据表里面的名称有如下两张表
数据库里面的表:sh_goods 商品表
模型名称:GoodsModel.class.php(去除表前缀.Model.class.php(固定写法))
数据库里面的表:sh_goods_attribute 商品属性值表
模型名称:GoodsAttibuteModel.class.php(去除表前缀剩下的部分全部使用大驼峰的方式.Model.class.php(固定写法))
- 模型的里面内容如何编写?(继承、方法的定义)
- 控制器里面如何实例化模型?
效果:
效果:
- 控制器里面如何将模型获取数据赋值给视图
- 视图里面如何展示数据
实例化模型
方法四:
通过在控制器里面引入模型类文件,然后使用new进行实例化我们可以获取模型实例.
方法二:
我们可以在控制器里面通过系统提供的一个D函数,直接实例化模型,得到实例
主要是D函数M函数
模型的curd,acid
查询数据
如果我们需要在模型里面查询数据,可以使用系统模型提供的select方法获取表中所有的数据信息。(二维数组)
public function getDataAction(){
$goodsModel =D("Goods");
$goodData= $goodsModel->select();
$count= $goodsModel->count();//获得表中总记录
$this->assign('goodsData',$goodData);
$this->display();
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<?php foreach($goodsData as $k=>$v):?>
<li>序号<?php echo $v['goods_id'];?></li>
<li>名称<?php echo $v['goods_name'];?></li>
<hr>
</ul>
<?php endforeach ?>
<hr>
<volist name="goodsData" id="data">
{$data:goods_id}:{$data.goods_name} <br>
</volist>
</body>
</html>
增加数据
系统逻辑,add 方法
public function addDataAction(){
$goodsModel=D('Goods');
$insertData = array(
'goods_name'=>'新的数据',
'goods_price'=>'1231.12',
'goods_number'=>1231,
'goods_sn'=>uniqid(),
);
//参数是一个关联数组,并且数组的下标是表中的字段名称,并且主键ID可以省略
$res=$goodsModel->add($insertData);//可以插入数据库
if ($res>0){
//成功,跳转到崭新页面
//success 是基类的Cotroller中的方法
$this->success('添加成功',U('getDdata'),10);
}else{
$this->error('添加失败',U('getDdata'),10);// 如果不指定第二个参数,就是往上一页跳转
die('error');
}
}
成功插入数据后,返回的是主键ID,应该是跳转到展示页面
改数据
明白:
- 修改条件
- 修改数据
底层代码:public function updataAction(){
$goodsModel = D('Goods');
$goodsId=21;
$updataData= array(
'goods_id'=>$goodsId,
'goods_name'=>'new data',
'goods_price'=>2000,
'goods_number'=>12312312,
'goods_sn'=> uniqid(),
);
//返回值是收影响的参数
$res = $goodsModel->save($updataData);
dump($res);
}
删除数据
public function delAction(){
//主键删除
$goodsId=21;
$goodsModel=D('goods');
$res = $goodsModel->delete($goodsId);
dump($res);
}
public function delAction(){
//主键删除
$goodsId=21;
$ids="19,20";
$goodsModel=D('goods');
//受影响的行数
$res = $goodsModel->delete($ids);
dump($res);
}
deltete根据主键之外的字段做删除public function delsAction(){
//根据除开主键之外的字段做删除
$options=array(
// 'where'=>array('goods_name'=>'shou1'),
// 'where'=>array('goods_price'=>12)
'where'=>array(8,9,10));
$goodsModel = D('Goods');
$res = $goodsModel->delete($options);
dump($res);
}