public function actionIndex()
{
$query = Article::find()->where(['status' => 1]);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count()]);
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'models' => $models,
'pages' => $pages,
]);
}
foreach ($models as $model) {
// display $model here
}
// display pagination
echo LinkPager::widget([
'pagination' => $pages,
]);
static function getData($waiting_deep = 0)
{
//достаем $prts из кэша
if (!(Yii::$app->cache->exists(self::CACHE_KEY__PRTS) AND is_array($prts = Yii::$app->cache->get(self::CACHE_KEY__PRTS)) AND isset($prts['version']) AND isset($prts['data']) AND is_array($prts['data']))) {
// данных в кэше нет
// выполняем процедуру подготовки данных с блокировкой для других процессов - чтобы другой процесс не начал делать тоже самое. В кэш поместить флаг блокировки Yii::$app->cache->set(CACHE_KEY__PRTS_FLAG_LOCK), а после подготовки данных и помещения их в кэш снять этот флаг блокировки. Если другой параллельный запрос не находит данных в кэше и при этом выставлен флаг блокировки Yii::$app->cache->exists(CACHE_KEY__PRTS_FLAG_LOCK), то он будет ожидать несколько(столькол сколько задана максимальная глубина ожидания) раз. Ограничиваем число ожиданий и интервал этих ожиданий.
if (Yii::$app->cache->exists(self::CACHE_KEY__PRTS_FLAG_LOCK) AND Yii::$app->cache->get(self::CACHE_KEY__PRTS_FLAG_LOCK)) {
if ($waiting_deep <= self::PRTS_FIND__WAITING_DEEP_MAX) {
usleep(self::PRTS_FIND__INTERVAL_WAITING_NEXT_CHECK_MICROSECONDS);
$prts = self::findPromoactionsRuleToShow($waiting_deep++);
} else {
return false;
}
} else {
Yii::$app->cache->set(self::CACHE_KEY__PRTS_FLAG_LOCK, true, 10); //сбросить флаг блокировки через 10 секунд в любом случае. Необходимо на случай ошибок при подготовки правил и следовательно невозможности в штатном режиме сбросить флаг блокировки.
if (!($prts = self::prepareData())!==false){
// кладем данные в кэш
Yii::$app->cache->set(self::DATA_PRTS, $prts);
}
// Сбрасываем флаг блокировки
// Yii::$app->cache->set(self::CACHE_KEY__PRTS_FLAG_LOCK, false);
Yii::$app->cache->delete(self::CACHE_KEY__PRTS_FLAG_LOCK);
}
}
return true;
}
$where =['DATE(`time`)' => new \yii\db\Expression('CURDATE()')];//текущая дата относительно серверного времени базы данных
// или
$where =['DATE(`time`)' => date('Y-m-d')];//текущая дата относительно серверного времени интерпретатора php
// или
$where =['DATE(`time`)' => '2135-12-25'];//требуемая дата
ModelActiveRecord::find()
->where($where)
->all();
CREATE INDEX idx_tableName_time ON tableName(time);
$query->find()
->select(['min(table_name.price)'])
->groupBy(['id'])
->all();
$query->find()
->select(['min(table_name.price)'])
->groupBy(['field1','field2','field3'])
->all();
actionMethoddd(){
// получаем переданный токен из заголовков, тела запроса, json или где вы там его передаете
// достаем из места хранение "ранее сохраненный" токен для данной сессии(условно - пользователь, аккаунт, id приложения)
// сравниваем друг с дружкой
// ПРОФИТ
}
... 'prospects[]' ...
...
$form->field($model, 'prospects')->
...
Orders::updateAll(['partner_commission_payment_id' => $newCommissionsPayment->id], ['partner_id' => 2]);
$resultArray = SettingsUser::find()->select(['show_name', 'show_nickname'])
->where(['id_user' => Yii::$app->request->post('author')])->asArray()->one();
$arQuery->AutoParams::find()
...
->where[['in', ['feature_id','value'], [ [424, 'Бензин'], [424, 'Гибрид'], [424, 'Дизель']]]]
-orWhere(['in', ['feature_id','value'], [ [425,'Автоматическая'], [425, 'Ручная']]])
-orWhere(['in', ['feature_id','value'], [ [426, 'Седан'], [426, 'Фургон'], [426, 'Универсал'] ]])
...
->all();