@hollanditkzn

Как сделать чтобы отображало соответствующее число записей?

У меня выходит так что я пишу один код и у меня выходит 0 записей, хотя я знаю что там 9 записей. У меня код в виджете
class Counter extends Widget
{
    private $params;

    public function init()
    {
        parent::init();

        $zakaz = Zakaz::find();
$this->view->params['scoreZakazAdmin'] = $zakaz->andWhere(['action' => 1])->count();
        $this->view->params['scoreZakazShop'] = $zakaz->andWhere(['id_sotrud' => Yii::$app->user->id, 'action' => 1])->count();
$this->view->params['scoreDisain'] = $zakaz->andWhere(['status' => [Zakaz::STATUS_DISAIN, Zakaz::STATUS_SUC_DISAIN, Zakaz::STATUS_DECLINED_DISAIN], 'action' => 1])->count();
}
public function run()
    {
        return Nav::widget([
        'options' => ['class' => 'nav nav-pills headerNav'],
        'items' => [
['label' => 'Заказы <span class="badge pull-right">'.$this->view->params['scoreZakazAdmin'].'</span>', 'encode' => false, 'url' => ['zakaz/admin'], 'visible' => Yii::$app->user->can('seeAdmin')],
            ['label' => 'Заказы <span class="badge pull-right">'.$this->view->params['scoreZakazShop'].'</span>', 'encode' => false, 'url' => ['zakaz/shop'], 'visible' => Yii::$app->user->can('seeShop')],
['label' => 'Заказы <span class="badge pull-right">'.$this->view->params['scoreDisain'].'</span>', 'encode' => false, 'url' => ['zakaz/disain'], 'visible' => Yii::$app->user->can('disain')],
]
 ]);
    }
}

В дебаг панеле я вижу несоответствующий запрос
SELECT COUNT(*) FROM `zakaz` WHERE (`action`=1) AND ((`id_sotrud`=3) AND (`action`=1)) AND ((`status` IN (3, 4, 9)) AND (`action`=1))
C:\OpenServer\domains\crm\frontend\components\Counter.php:37
C:\OpenServer\domains\crm\frontend\views\layouts\main.php:36
C:\OpenServer\domains\crm\frontend\controllers\ZakazController.php:625
13:21:03.242 info yii\db\Command::query SELECT COUNT(*) FROM `zakaz` WHERE (`action`=1) AND ((`id_sotrud`=3) AND (`action`=1)) AND ((`status` IN (3, 4, 9)) AND (`action`=1)) AND ((`status` IN (6, 7, 10)) AND (`action`=1))
C:\OpenServer\domains\crm\frontend\components\Counter.php:38
C:\OpenServer\domains\crm\frontend\views\layouts\main.php:36
C:\OpenServer\domains\crm\frontend\controllers\ZakazController.php:625
Хотя если удалить scoreZakazShop, То будет норма
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
$zakaz = Zakaz::find();
$zakaz->andWhere(['action' => 1])->count();
//вот тут $zakaz уже содержит результат count
//соответственно дальнейший $zakaz->andWhere должен вызывать ошибку, но у Вас они отключены.

поэтому как минимум так
$zakaz = Zakaz::find();
$this->view->params['scoreZakazAdmin'] = $zakaz->andWhere(['action' => 1])->count();
$zakaz = Zakaz::find();
$this->view->params['scoreZakazShop'] = $zakaz->andWhere(['id_sotrud' => Yii::$app->user->id, 'action' => 1])->count();
$zakaz = Zakaz::find();
$this->view->params['scoreDisain'] = $zakaz->andWhere(['status' => [Zakaz::STATUS_DISAIN, Zakaz::STATUS_SUC_DISAIN, Zakaz::STATUS_DECLINED_DISAIN], 'action' => 1])->count();
}

Включите вывод всех ошибок, иначе разработка станет адом. Надо знать когда программа работает не корректно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы