Yii 多表关联relations
1,首先多表关联是在models/xx.php的relations里配置的。而且是互配,但有区别。
格式:
‘VarName’=>array(‘RelationType’, ‘ClassName’, ‘ForeignKey’, …additional options)
需要弄清楚的几点:
1,VarName指什么? 详见下面例2。
2,RelationType。一共有4种,分别为self::HAS_MANY, self::BELONGS_TO,[……]
1,首先多表关联是在models/xx.php的relations里配置的。而且是互配,但有区别。
格式:
‘VarName’=>array(‘RelationType’, ‘ClassName’, ‘ForeignKey’, …additional options)
需要弄清楚的几点:
1,VarName指什么? 详见下面例2。
2,RelationType。一共有4种,分别为self::HAS_MANY, self::BELONGS_TO,[……]
AR写法:
$CDbCriteria = new CDbCriteria();
$CDbCriteria->order = ‘`id` desc’;
$count=MessageModel::model()->count($CDbCriteria);
$pages=new CPagination($count);
$pages->pageSize=8;
$pages->applyLimit($CDbCriteria);
$model = MessageModel::m[……]
使用了Yii的efeed扩展(地址:http://www.yiiframework.com/extension/efeed/)
把文档中的代码修改下放入view:
<?php
Yii::import(‘ext.feed.*’);
$feed = new EFeed(EFeed::ATOM);
$title=$catalog?Yii::app()->name.’ – ‘.$catalog->Label:Yii::app()->name;
$feed->[……]
首先是扩展Post类,生成两个相应查询
public function nextpost()
{
return self::model()->find(array(‘condition’=>’id>:id’,’params’=>array(‘:id’=>$this->id),’order’=>’t.id ASC’));
}
public function prevpost()
{
return self::model()-&g[……]
前段时间为SNS产品做了架构设计,在程序框架方面做了不少相关的压力测试,最终选定了YiiFramework,至于为什么没选用公司内部的PHP框架,其实理由很充分,公司的框架虽然是”前辈”们辛苦的积累,但毕竟不够成熟,没有大型项目的历练,犹如一个涉世未深的年轻小伙。Yii作为一个颇有名气开源产品,必定有很多人在使用,意味着有一批人在维护,而且在这之前,我也使用Yii开发过大型项目,Yii的设计模式和它的易扩展特性足以堪当重任。
SNS同一般的社交产品不同的就是它最终要承受大并发和大数据量的考验,[……]
首先我们先了解一下如何创建一个CComponent,手册讲述如下:
CComponent 是所有组件类的基类。
CComponent 实现了定义、使用属性和事件的协议。
属性是通过getter方法或/和setter方法定义。访问属性就像访问普通的对象变量。读取或写入属性将调用应相的getter或setter方法,例如:
$a=$component->text;
// equivalent to $a=$component->getText();
$[……]
1.当你通过yiic创建一个webapp应用后,
会在webapp/protected/下生成yiic.php, 由于是命令行应用,所以这里的yiic.php其实就是与webapp下的index.php一样的,命令行入口文件。
2.打开yiic文件,添加一行设置,将commands目录的路径添加到yiic中,这样,yiic就能够找到commands目录下的命令文件了,修改后的代码如下,红色为新加入代码:
<?php
// change the following pa[……]
JTool.php在protected/components 下
<?php
class JTool extends CComponent{
private $_width;
public function getWidth(){
return $this->_width ? $this->_width : 1;
}
public function setWidth($width){[……]
关于 Yii 的事件和行为的描述,可参考 http://www.yiiframework.com/doc/api/1.1/CComponent
事件
事件模型就是设计模式中的“观察者模式”:当对象的状态发生了变化,那么这个对象可以将该事件通知其它对象。
为了使用事件模型,需要实现这三个步骤:1、定义事件;2、注册事件句柄;3、触发事件。
为什么要做这三个步骤呢?因为对于 PHP 本身,它的执行过程不是以进程化来运行的,
所以 Yii 的事件触发机[……]
1.启动
网站的唯一入口程序 index.php :
$yii=dirname(__FILE__).’/../framework/yii.php’;
$config=dirname(__FILE__).’/protected/config/main.php’;
// remove the following line when in production mode
defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,tru[……]