Yii 1.1.9
1 января 2012
Вышла стабильная версия 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
. Теперь используя тот же самый подход можно перекрыть классы ядра.
Комментарии RSS по email OK
Вот вам и с новым годом :-)
Есть вопрос по changelist'у: Enh: jquery.yiiactiveform.js added check for form visibility to validate() to prevent JS error when using CActiveForm with jQuery dialog (mdomba)
Это значит, что если форма не видима, то.... что это значит?
Исправили ошибку при валидации скрытой формы (которая для диалога отренедерена).
А, т.е. это не изменение, а просто ошибку закрыли?
Да.
Всем привет, где можно посмотреть пример правильного использования переопределения классов через classMap?
Вот через этот атрибут класса YiiBase: http://code.google.com/p/yii/source/browse/trunk/framework/YiiBase.php#58
Описано здесь как использовать $classMap: http://www.yiiframework.com/doc/guide/1.1/ru/basics.namespace#sec-3
Т.е. получится нечто вроде:
Вот коммит: http://code.google.com/p/yii/source/detail?r=3398
Там видно, что раньше $_coreClasses имели приоритет выше, чем $classMap, а теперь наоборот. Что и дало возможность переопределять core-классы.
может странный вопрос, но всеже: как правильно произносить Yii?
Можно послушать в скринкастах на англоязычном сайте.