Yii之路(第二)

来源:互联网 发布:软件成熟度 编辑:程序博客网 时间:2024/04/29 16:28

添加数据的标准写法,用万能的save方法


 


利用助手进行表单展现,偷懒神技~
 

YII里面称助手是"小物件"wedgit

视图的表单处理.

 

控制器需要把当前模型的对象传到视图里面:

 
再次 数据模型需要有一个方法提供汉字名称统一显示:



 

 


 
这么处理表单是挺棒的。
这下一个页面可以提交多个表单了。



 AR(ActiveRecord)活跃记录。

YII叫CActionRecord.


find() 查询一个信息
findAll()查询全部信息
findAllByPk()根据主键查询全部信息
finAllBysql()根据sql语句查询全部信息
findByPk()根据主键查询信息
findBySql()根据sql语句查询信息


findAllByPk(array(xxx))查询多条信息
findAll($conidtion,$param);

condition就是where是条件

demo:
这是复合查询
$model->findAll("goos_name like ''xxx"  and goods_price>500");
为了避免安全问题,sql语句里面最好不要写条件信息

$infos = $model->findAll("goods_name like :name and goods_price>:price",array(':name'=>'诺%',':price'=>500));

有的时候我们查询信息,想要查询具体的字段 select
想要查询具体的条件 condition
想要查询具体的次序 order
想要查询具体的分组 group
想要查询具体的限制  limit
想要从哪里开始 offset

demo:
$info = $model->findAll(array('select'=>'goods_name,goods_price','condition'=>'goods_name = xxxxx'));

我们使用finAll()该方法是数据模型给我们封装好的方法,可以获得全部数据

findAll()是CactiveRecord这个类的成员方法,AR是对数据库向上的封装。

AR需要最终转变为具体的sql语句,通过一个中间类(criteria标准)转为的具体的sql语句








所以我们可以用criteria实现多重条件查询

$criteria = new CDbCriteria();

$criteria->select ="goods_name,goods_price";
$criteria->condition="goods_id = 1";
$criteria->limit="6";

$criterid->order = 'goods_price';
$infos = $model->findAll($criteria);

 这样查询也行!

 关于YII的一些附件都是以组建components形式存在,话说当时学TP的时候也是用的components为组件


比如说分页类到

 

 

发现了一个问题:
如果控制器下没有调用save()方法的话,那么验证就会失效的



注意一下:
$user_model->attributes = $_POST['User'];

attributes这个属性在使用的时候会收集表单信息并赋予模型属性里面

该属性是和rule()方法一并使用,只有在rules()里面设置了验证规则的属性

才可以被attributes接受

如果有的属性没有具体验证规则,则给一个safe规则。

 
//为没有做验证规则的属性做safe验证规则,否则attributes接受不到信息

 
array('user_sex,user_desc','safe'),
0 0
原创粉丝点击