添加数据的标准写法,用万能的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' ),