Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
class Comment < ActiveRecord::Base
belongs_to :user
scope :older_than, -> timestamp { where 'created_at > ?', timestamp }
end
class Comment extends Eloquent
{
public function user() { return $this->belongsTo('User'); }
public function scopeOlderThan($query, $timestamp) { return $query->whereRaw('created_at > ?', [$timestamp]); }
}
class Comment extends ActiveRecord
{
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'user_id']);
}
public static function find()
{
return new CommentQuery(get_called_class());
}
}
class CommentQuery extends ActiveQuery
{
public function olderThan($timestamp)
{
$this->andWhere('>', 'timestamp', $timestamp);
return $this;
}
}
Просьба разъяснить что конкретно становится понятно конкретно обо мне, если я скажу, что я не люблю первый Yii и сторонник Laravel, RoR и Symfony? Так, мне просто любопытно.Вы испытываете острую потребность в прочной и глубокой привязанности, эмоциональном комфорте и защите от внешних воздействий. Потребность в понимании, любви и поддержке является ведущей и поэтому наиболее легко травмируемой мишенью. Вас характеризуют дружелюбие, конформность установок, но и замкнутость, избирательность в контактах, аналитический склад ума, вдумчивый подход к решению проблем, инертность в принятии решений, преобладание стремления к покою, уединенности. Всплески активности быстро сменяются фазой пассивности.
/**
* Performs db migration to the latest available version
*/
public function actionMigrateUp()
{
try{
$commandPath = Yii::app()->getBasePath() . DIRECTORY_SEPARATOR . 'commands';
$runner = new CConsoleCommandRunner();
$runner->addCommands($commandPath);
$commandPath = Yii::getFrameworkPath() . DIRECTORY_SEPARATOR . 'cli' . DIRECTORY_SEPARATOR . 'commands';
$runner->addCommands($commandPath);
$args = array('yiic', 'migrate', '--interactive=0');
ob_start();
$runner->run($args);
echo nl2br(CHtml::encode(ob_get_clean()));
}catch(Exception $e){
echo $e->getMessage();
}
}
public function actionMigrateDown()
{
try{
$commandPath = Yii::app()->getBasePath() . DIRECTORY_SEPARATOR . 'commands';
$runner = new CConsoleCommandRunner();
$runner->addCommands($commandPath);
$commandPath = Yii::getFrameworkPath() . DIRECTORY_SEPARATOR . 'cli' . DIRECTORY_SEPARATOR . 'commands';
$runner->addCommands($commandPath);
$args = array('yiic', 'migrate', 'down', '--interactive=0');
ob_start();
$runner->run($args);
echo nl2br(CHtml::encode(ob_get_clean()));
}catch(Exception $e){
echo $e->getMessage();
}
}
public function getMetaData()
{
$md = parent::getMetaData();
$md->tableSchema->rawName = $this->getDbConnection()->quoteTableName($this->tableName());
return $md;
}
В Yii2 методы tableName и getDbConnection стали статичными, что осложняет использование шардинга в ActiveRecord.
Могу выложить куда-нибудь, если интересно.
а новомодные паттерны усложняют отладку
неприятно отсутствие встроенной в AR валидации.
Для меня это сильно связанная система, в которой все перемешано.
Так это же хорошо! AR ничего о валидации знать не должна.
AR ничего о валидации знать не должна
http://example.com/index.php?r=controller/action¶m1=value1¶m2=value2http://example.com/index.php?r=controller/action¶m1=value1¶m2=value2 'urlManager' => [
'enablePrettyUrl' => false,
'rules' => [
'zzz' => 'site/index',
],
],
enablePrettyUrl их просто незачем использовать, ведь формат получается всегда стандартный. Но никакие исключения не кидаются, так что в коде можно смело прописывать и при включении enablePrettyUrl всё начнём добавляться и работать.'zzz' => 'site/index', и выполнении кода:echo Url::to(['site/index']);
index.php?r=site/index. Если не секрет, для чего вам index.php?r=zzz и что мешает нормально настроить рерайт?
Yii 2.0. Релиз