????真是表名 = 前缀 + 逻辑表名????it_category = it_ + category
????前缀,应该是可以被设置的,甚至逻辑表名都可能变化!显然,前缀应该可以被配置,而逻辑表名在模型类定义时,就确定了。
????application/config/application.config.php
????
????
????在基础模型中,增加一个得到真实表名的方法????Model.class.php
????
????Tips:最好使用反引号包裹!
????使用表名时,应该调用该方法:
????在模型中:
????
????场景:利用ID查询分类的SQL
????select * from {$this->table()} where cat_id='$cat_id';
????分解:select * from 当前表名 where 主键字段=主键字段值
????以上的sql是否可以拼凑出来?可以,需要知道表的结构信息(哪个是主键)。
????delete from 表名 where 主键字段=主键值
????在模型上增加一个可以保存当前表的结构信息的属性,当模型被实例化是,该属性被初始化。
????例如:$field = array('cat_id', 'cat_name', 'parent_id', 'pk'=>'cat_id');
????
????
在构造方法时调用:
基础模型中定义的构造:
????应该在基础模型中,增加拼凑sql的方法,拼凑一条select利用主键查询SQL
????Model.class.php
????
????需要是使用:CategoryModel.class.php
????
????甚至可以将getById方法省略,控制器直接调用模型的getByPk方法即可:
????CategoryController.class.php
????
????在基础模型Model.class.php中增加一个方法:deleteByPk()
????
????获得列表,典型的需要条件????Model.class.php
????
????拼凑:insert into 表名 (字段列表) values(值列表)
????需要的数据源,是一个关联数组,要求,数组的每个元素就是需要插入的字段值,数组元素的下标应该是字段名。
????$data 就是需要的。
????$data = array(cat_name =>'新分类名', parent_id => '父分类ID值');
????需要利用其拼凑出来:insert into it_category(cat_name, parent_id) values ('新分类名', '父分类ID值');
????在基础模型Model.class.php中增加方法insertData()
????
????
????
????拼凑的结果
????
????再增加数据时,使用该方法:CategroyModel.class.php????
????
????Tips:我们的插入,依赖于提供正确格式的$data数组才可以,保证正确的键即可。
????是否可以检测出来用户使用的数组格式是否正确呢?
????知道表的所有字段,判断元素下表是否在字段名列表内即可。
????
????拼凑:update 表名 set 字段=值,字段=值 where 条件
????分析:有$data关联数组,就可以得到字段和值
????条件如何确定?如果$data内,存在主键字段元素,则可以确定记录。
????再增加一个条件参数,price>100,也可以作为条件
????没有存在?认为不允许更新。
????
????结构上的处理
????增加三私一公:MySQLDB.class.php
????构造函数的参数如何传递?先将参数传入到getInstance方法中,再将参数传递给构造函数
????
????该方法得到对象:SessionDBTool
????
????基础模型类:Model.class.php
????
???? ?
????
????增加一个商品管理控制器类模块
????controller/back/GoodsController.class.php
????增加展示添加表单的办法:
????
????增加模板
????做一个4个页面的选项卡
????
????删除掉不需要的代码,需要增加两个js文件:
????
????
增加链接
处理添加数据