Atualizando a versão 1.0 para 1.1
Mudanças Relacionadas a Cenários de Modelos
Removido o método CModel::safeAttributes(). Atributos seguros agora são definidos por aqueles que estão sendo validados por alguma regra conforme definidas em CModel::rules() para o cenário em particular.
Alterados os métodos CModel::validate(), CModel::beforeValidate() e CModel::afterValidate(). CModel::setAttributes(), CModel::getSafeAttributeNames(). O parâmetro 'scenario' foi removido. Você deve obter e setar o cenário do modelo através de CModel::scenario.
Alterado o CModel::getValidators() e removido CModel::getValidatorsForAttribute(). CModel::getValidators() agora só retorna os validadores que se aplicam ao cenário conforme especificado na propriedade scenario do modelo.
Alterados o CModel::isAttributeRequired() e CModel::getValidatorsForAttribute(). O parâmetro scenario foi removido. Ao invés disso, será usada a propriedade scenario do modelo.
Removido o CHtml::scenario. CHtml usará o cenário do modelo ao invés disso.
Mudanças Relacionadas a Eager Loading para Active Record Relacional
- Por padrão uma única declaração JOIN será gerada e executada para todos os
relacionamentos envolvidos no eager loading. Se a tabela principal tiver as
suas opções
LIMIT
ouOFFSET
definidas, ela será consultada sozinha primeiro, seguida por outra declaração SQL que retorna todos os objetos relacionados. Antes disso na versão 1.0.x, o comportamento padrão é que haveriamN+1
declarações SQL se um eager loading envolvesseN
relacionamentosHAS_MANY
ouMANY_MANY
.
Mudanças Relacionadas a Alias de Tabelas no Active Record Relacional
O alias padrão para uma tabela relacional agora é o mesmo que o nome da relação. Anteriormente, na versão 1.0.x, o Yii por padrão automaticamente geraria um alias de tabela para cada tabela relacional, e tínhamos de usar o prefixo
??.
para nos referir a este alias gerado automaticamente.O nome do alias para a tabela principal em uma query do AR foi fixado como sendo
t
. Anteriormente, na versão 1.0.x, era o mesmo que o nome da tabela. Isso fará co mque o código de queries de AR existentes deixem de funcionar se eles explicitamente especificam prefixos de coluna usando o nome da tabela. A solução é substituir esses prefixos com 't.'.
Mudanças Relacionadas a Entrada Tabular
- Não é mais válido usar
Field[$i]
para nomes de atributos, eles deveriam ser como[$i]Field
de modo a suportar campos do tipo array (por exemplo,[$i]Field[$index]
).
Outras Mudanças
- A assinatura do construtor da CActiveRecord mudou. O primeiro parâmetro (a lista de atributos) foi removido.