时间:2021-05-25
本文汇总了Yii使用技巧。分享给大家供大家参考,具体如下:
一、从yii权威指中学到的
db组件 'schemaCachingDuration'=>3600, 为什么不起做用?
需要开缓存
如何在页面下边显示sql的查询时间
在log组件的routes中加入
array('class'=>'CProfileLogRoute','levels'=>'error, warning',)同时在db组件中加入
复制代码 代码如下:'enableProfiling'=>true,
同时在这种情况下,可以用CDbConnection::getStats() 查看执行了多少个语句,用了多少时间
如何知道某一个程序段运行需要的时间
配置好CProfileLogRoute后,在需要测试的地方加上
Yii::beginProfile('blockID');//程序段Yii::endProfile('blockID');'enableParamLogging'=>true,的作用是?
在日志的bind的参数后边跟数的值
如何在页面底部显示所有的db相关的日志
同上,配置log组件的routes中加入
array('class'=>'CWebLogRoute','levels'=>'trace, info, error, warning','categories' => 'system.db.*',//'showInFireBug' => true, 将在firebug中显示日志),把日志记录到数据库
array('class'=>'CDbLogRoute','logTableName'=>'applog','connectionID'=>'db',),运行时表applog会自动生成,如果不能生成,参照api自已建立
如何记录$_GET,$_SESSION等信息,在以上的routes中各个配置中加上
复制代码 代码如下:'filter'=>'CLogFilter',
log配置中的level设置不对,可能会得不到日志信息
另外level,category的值可以随便写,
只要在用yii::Log("","自定义level","自定义的category")时对应起来即可
如何记录更详细的信息,能记录stack,在入口文件中加上
复制代码 代码如下:define('YII_TRACE_LEVEL',10);数字越大,记当的越详细,结果如下
[15:31:57.226][trace][system.db.CDbCommand] Querying SQL: SHOW COLUMNS FROM `Bangdan` in E:APMServ5.2.6ponent{private $title = 'title';public $oldtitle;public function getTitle(){return $this->title ? $this->title : 'old title<br />';}public function setTitle($title){echo '=='.$this->oldtitle.'==';$this->oldtitle = $this->title;$this->title = $title;if($this->hasEventHandler('onTitleChange')){$event =new CEvent($this);$this->raiseEvent('onTitleChange', $event);}}//必须有这么个方法,其和raiseEent中的事件一样,具体看代码public function onTitleChange($event){}}<?phpclass Window extends CBehavior{public function events(){return array_merge(parent::events(),array('onTitleChange'=>'titleChange',));}public function titleChange($event){echo $event->sender->title;echo 'event TitleChange is handled in Behavior<br />';echo $this->owner->title;}public function titleOld(){echo '<br />old title is is '.$this->owner->oldtitle;}}
main.php中的写法
'ExtWin'=>array('class' => 'ExtWindow','oldtitle'=>'我是旧的','behaviors'=>array('win'=>'application..behavior.Window')一对多,多对多的关联时最后的参数 together说明
如果为false,分开查多个语句
如果为true,强制生成一个语句
如果没有设置,分页页生成多个语句,不分页时生成一个语句
),
多对多时,查询时,中间表的名子叫 (关联名_关联名)
with选项的作用是eager loading
together的作用是 要不要形成一个语句
当是一个sql语句是记录会有重复,这时候分页分出现相同的记录,加上group=>true即可,
只要弄明白了,你生成的sql是一条还是多条sql就明白在多对多查询时的结果了
两个表不是用主键关联
复制代码 代码如下:'user' => array(self::BELONGS_TO, 'OaskUser', '','on'=>'name=userName', 'select'=>'TrueName'),
表带talbeprefix是,多对关联,键的写法
复制代码 代码如下:'categories'=>array(self::MANY_MANY,'Category','{{post_category}}(post_id,category_id)'),
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例汇总了Yii编程开发常见调用技巧。分享给大家供大家参考,具体如下:1.设置cookie:$cookie=newCHttpCookie('mycookie
本文针对Yii多表联查进行汇总描述,供大家参考,具体内容如下1、多表联查实现方法有两种方式一种使用DAO写SQL语句实现,这种实现理解起来相对轻松,只要保证SQ
本文实例总结了YII框架常用技巧。分享给大家供大家参考,具体如下:获取当前Controllername和actionname(在控制器里面使用)echo$thi
使用Excel2016处理表格时候,有时候我们需要对已知的数据进行分类汇总,这样我们可以很快的得到我们需要的数据,当然在excel中分类汇总技巧也比较多,这
本文实例讲述了Yii2框架中日志的使用方法。分享给大家供大家参考,具体如下:Yii2和Yii1.x的区别Yii2里面日志的使用方法和Yii1.x并不相同,在Yi