高性能的PHP5開發框架,Yii Framework 1.1.9 發布了
Yii是一個高性能的PHP5的web應用程序開發框架。通過一個簡單的命令行工具 yiic 可以快速創建一個web應用程序的代碼框架,開發者可以在生成的代碼框架基礎上添加業務邏輯,以快速完成應用程序的開發。
2012年元旦,發布了Yii PHP framework 1.1.9
We are very pleased to announce the immediate availability of Yii Framework version 1.1.9. In this release, we've included nearly 60 enhancements and bug fixes.
For the complete list of changes in this release, please see the change log and important feature additions. And if you plan to upgrade from an older version to 1.1.9, refer to the upgrade instructions.
In the following page, we briefly introduce some of the changes in this release.
More convenient way to define through AR relation
Active Record though option was introduced in 1.1.7 but syntax wasn't convenient so we decided to make it more definitive. Current syntax is the following:
'comments'=>array(self::HAS_MANY,'Comment',array('key1'=>'key2'),'through'=>'posts'),
In the above array('key1'=>'key2'):
key1
is a key defined in relation specified inthrough
(posts
is this case).key2
is a key defined in a model relation points to (Comment
in this case).
through can be used with both HAS_ONE and HAS_MANY relations.
For more details and examples refer to Relational Query with through.
Scope support for Model::relations()
You can now use scopes when defining AR model relations such as
'recentApprovedComments'=>array(self::BELONGS_TO, 'Post', 'post_id', 'scopes' => array('approved', 'recent')),
In case of a single scope you can specify a single scope with a string instead of array.
Ability to join AR models on a specific keys
It is now possible to build AR relations on PK->FK specified instead of relying on the schema defaults so you can specify AR relation like the following declaration for Day model:
'jobs'=>array(self::HAS_MANY, 'Job', array('date' => 'target_date')),
In the case above Day can have multiple Jobs but these aren't related usual way. We've specified relation key in form of array('fk'=>'pk'). That means it will generate SQL like
SELECT * FROM day t JOIN job ON t.date = job.target_date
Ability to override core classes using Yii::$classMap
There was an ability to pre-import classes and use them without explicitly importing or including since 1.1.5. Now using the same technique you can override Yii core classes with your own ones.