Tag Archives: Yii

Yii deleteByAttributs 用法,慎用Dao的delete

Yii框架一定要慎用Dao的delete,一不小心它生不成条件的话,就变成了整表删除。 可以用ActiveRecord的deleteByAttributes或deleteAll方法相对不容易写错。 deleteByAttributes用法如下: MyClass::model()->deleteAllByAttributes(array( ‘phone_number’=>$phoneNumber, )); 或者第一个参数为空,使用第二个条件参数 MyClass::model()->deleteAllByAttributes(array(),’`phone_number` = :phone_number’,array( ‘:phone_number’=>$phoneNumber, )); 或者使用deleteAll(): MyClass::model()->deleteAll(‘`phone_number` = :phone_number’,array( ‘:phone_number’=>$phoneNumber, )); 再来一个带in条件的 $condition = new CDbCriteria(); $condition->addCondition(‘status=:status’); $condition->params = array(‘:status’=>1); $condition->addInCondition(‘user_id’,array(100111,100221,100221)); User::model()->deleteAll($condition); Dao带in条件的示例 Yii::app()->db->createCommand() ->delete(‘mw_user’, array(‘and’, ‘user_id=:user_id’, array(‘in’, ‘position_id’, array(1,2,3))),array(‘:user_id’=>121111)); 但是请慎用DAO的delete,当你的条件写错一点,它将无法生成where条件,同时sql语句中也没有了where,但还不一定报错,结果就成了没有where的delete,结果会是整表被删除了。

Posted in PHP & MYSQL | Tagged | Leave a comment

Yii框架针对gbk编码的修改,CHtml可用,兼容php5.4

如果你的Yii框架不得已要使用gbk编码,你要做的有四件事: 1.复制一份儿框架中的中文语言包出来改为gbk编码,放在protected/messages,然后配置文件的components段中加入 // gbk编码的语言包 ‘coreMessages’=>array( //’basePath’=>null, ‘basePath’=> dirname(__FILE__).DIRECTORY_SEPARATOR.’..’.DIRECTORY_SEPARATOR.’messages’, ), 2.复制一份儿框架中的i18n中关于中文的文件改为gbk编码,放在protected/i18n/data下 然后config/main.php中加入 ‘localeDataPath’=>dirname(__FILE__).DIRECTORY_SEPARATOR.’../i18n/data’, 3.复制一份儿框架中的views/exception.php到protected/views/system,改一下里面的编码为gbk,默认是utf8,否则调试页面就乱码了。 4.修改CHtml类: CHtml类使用了htmlspecialchars来格式化输出,但htmlspecialchars不支持gbk编码。 当然,你可以把htmlspecialchars的编码去掉,但php5.4这样做时,就会没有输出。 一共改两个方法,一个是encode,还有一个encodearray 如果你使用了apc的话,请修改框架目录中yiilite.php中对应的两个方法。 如果你不使用apc的话,并且像我一样不愿意修改框架本身,可以把Chtml复制一份出来然后使用Yii的classmap来自定义这个类的路径。然后在入口文件处来定义,例如我的: require_once ($yii); // 重写yii class map,使用自定义的CHtml。 yiilite中的代码要手动修改不能使用此方法覆盖 Yii::$classMap=array(‘CHtml’=>__DIR__.’/../protected/extensions/helpers/CHtml.php’); 下面是要修改的CHtml类中的两个方法 public static function encode($text) { if(PHP_VERSION < ‘5.4.0’) { return htmlspecialchars($text,ENT_QUOTES); } … Continue reading

Posted in PHP & MYSQL | Tagged , | 1 Comment

针对Yii框架的nginx配置

我曾经针对yii制作了 个nginx配置,其中包括了以下几项内容: rewrite规则(try_file),需要nginx0.8.6版本以上支持。 针对于icon, robots.txt文件的日志优化 .svn, .git,等版本控制文件的忽略,以及Mac本身索引文件目录 Yii框架本身应该禁止web访问的目录。 图片等静态文件缓存优化 在这里分享一下demo server { listen 80; server_name youdomain.com; index index.html index.htm index.php; root /home/wwwroot/htdocs/yii-1.1.8.r3324/demos/blog; #charset koi8-r; # 这里的main,是nginx默认的httpd段的一个日志格式定义 access_log /home/wwwlogs/localhost.access.log main; #error_page 404 /404.html; # redirect server error pages to the static … Continue reading

Posted in Web Server | Tagged , | 2 Comments