1 January 2012

Yii 1.1.9

Yii
Вышла стабильная версия PHP-фреймворка Yii с номером 1.1.9. В данном релизе около 60 улучшений и исправленных ошибок.

Полный список изменений можно посмотреть в соответствующем файле. Перед обновлением с более ранних версий важно ознакомиться с инструкциями.

Русскоязычная документация, как обычно, находится в полностью актуальном состоянии. Кроме того, поправлены все найденные на момент релиза опечатки. Спасибо всем, кто использует Orphus на yiiframework.ru.

Рассмотрим наиболее интересные изменения.



Более удобный способ определения `through` в отношениях ActiveRecord



Опция though была добавлена в версии 1.1.7, но синтаксис был не слишком удобен, так что было решено сделать его более явным. В текущей версии используется следующий синтаксис:

'comments'=>array(self::HAS_MANY,'Comment',array('key1'=>'key2'),'through'=>'posts'),


В приведённом выше array('key1'=>'key2'):

key1 является ключом, определённым в отношении, котрое указано в through (в нашем случае это posts).
key2 является ключом, определённым в модели, на которую указывает отношение (в нашем случае это Comment).

through можно использовать как для HAS_ONE, так и для HAS_MANY.

Подробнее данная возможность описана в разделе Реляционная Active Record полного руководства.

Поддержка групп условий в Model::relations()



Теперь можно использовать группы условий при определении отношений модели:

'recentApprovedComments'=>array(self::BELONGS_TO, 'Post', 'post_id', 
    'scopes' => array('approved', 'recent')),


При использовании лишь одной группы условий её можно указать как строку.

Возможность сделать JOIN между моделями по заданным ключам



В данной версии стало возможым создание отношений по заданной паре PK->FK не опираясь на схему данных. Это означает, что можно, например, задать следующее отношение для модели Day:

'jobs'=>array(self::HAS_MANY, 'Job', array('date' => 'target_date')),


В данном случае Day может содержать несколько Jobов. При этом они не связаны привычным образом. Мы задали ключ в виде array('fk'=>'pk'), то есть на выходе мы получим SQL вроде

SELECT * FROM day t
JOIN job ON t.date = job.target_date


Возможность перекрыть классы ядра при помощи Yii::$classMap



Начиная с 1.1.5 в Yii была возможность заранее импортировать классы и использовать их без явного импорта или include. Теперь используя тот же самый подход можно перекрыть классы ядра.
Tags:yiiphpframework
Hubs: Yii
+28
2.3k 28
Comments 38