$data = Event::find()
->select([
'name',
'date_begin',
// делим на 60 * 60 * 24 * 30 и отбрасываем бробную часть после деления
'date' => 'TRUNCATE(date_begin / 2592000, 0)'
])
// ->where([ ... ])
->orderBy(['date_begin' => SORT_DESC])
->indexBy('date')
->asArray()
->all();
public function getSites() {
return $this
->hasMany(Site::className(),['id_site'=>'id_site']) // !!!
->viaTable('c_category_join_site', ['id_category' => 'id_category']);
}
Только вот не могу понять как это реализовать.
use lav45\behavior\Target;
/**
* @property Tag[] $tags
* @property array $tagValues
*/
class Post extends ActiveRecord
{
public function rules()
{
return [
[['tagValues'], 'safe'],
];
}
public function behaviors()
{
return [
[
'class' => Target::class,
'targetAttribute' => 'tagValues',
'targetRelation' => 'tags',
'delimiter' => ','
]
];
}
public function getTags()
{
return $this->hasMany(Tag::className(), ['id' => 'tag_id'])
->viaTable('post_tag', ['post_id' => 'id']);
}
}
$post = new Post();
$post->tagValues = 'foo, bar, baz';
$post->tagValues = ['foo', 'bar', 'baz'];
$post->save();
public function getUserProjects()
{
return $this->hasMany(UserProjects::className(), ['project_id' => 'id']);
}
public function getUsers()
{
return $this->hasMany(User::className(), ['id' => 'user_id'])
->via('userProjects');
}
News::find()
->with([
'author.profile',
'category',
'comments',
// И остальные
])
->limit(30)
->all()
SELECT * FROM author WHERE id = 1;
SELECT * FROM author WHERE id = 2;
SELECT * FROM author WHERE id = 5;
SELECT * FROM author WHERE id in (1,2,5);
News::find()
->with([...])
->asArray()
->limit(30)
->all()
Например контент с несколькими языками.
class Order extends ActiveRecord
{
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_DEFAULT] = [/** Все поля без поля status */];
$scenarios['editWithStatus'] = [/** Все поля */];
return $scenarios;
}
}
public static function getList()
{
return static::find()
->select(['name', 'id'])
->indexBy('id')
->asArray()
->column();
}
// @see \yii\db\pgsql\QueryBuilder::resetSequence()
$sql_resetSequence = Yii::$app->db->queryBuilder->resetSequence($table, $value);
Yii::$app->db->createCommand($sql_resetSequence)->execute();