@akula22

Как получить определенный статус в гриде?

Есть база личных сообщений {pm} id, user_id(кому сообщение), sender_id(кто посылает) и
status
self::STATUS_UNREAD => 'Не прочитано', 0
self::STATUS_READ => 'Прочитано', 1
self::STATUS_DELETE => 'Удалено', 2
Когда юзер заходит в сообщения он видит список людей приславших ему сообщения, их я вывожу через Gridview
вот таким запросом
$query = self::find()->where('
        user_id = :user_id AND sender_id != :user_id AND status != :status', 
        [
            'user_id' => Yii::$app->user->id,
            'status' => Pm::STATUS_DELETE,
        ])
        ->groupBy('sender_id')
        ->with(['profile'])
        ->orderBy('id DESC');

Все хорошо выводит, НО в гриде там где ActionColumn я должен вывести конвертики, если есть сообщения со статусом STATUS_UNREAD (хотя бы одно сообщение) вывести закрытый конверт если все прочитаны то
сейчас у меня
[
                'class' => 'yii\grid\ActionColumn',
                'headerOptions' => ['width' => '50'],
                'template' => '{view}  {delete}',
                'buttons' => [
                    'view' => function ($url, $data) 
                    {
                        $icon = $data->status == 0 ? '<i class="fa fa-envelope"></i>' : '<i class="fa fa-envelope-o"></i>';
                        return Html::a($icon, ['view', 'id' => $data->sender_id]);
                    },
                    'delete' => function ($url, $data) 
                    {
                        return Html::a('<i class="fa fa-trash"></i>', ['delete', 'id' => $data->sender_id], ['data' => ['confirm' => 'Вы уверены?']]);
                    },
                ],
            ],

но это не срабатывает, мне надо как-то узнать есть ли хоть одно сообщение не прочитано. (status=0)
То есть где-то в запросе мне надо подшаманить, но как я не знаю, есть мысли?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы