@kranopodem

Как проверить есть ли запись в закладках у пользователя?

На главной выводится список записей. Нужно как-то сделать чтобы из таблицы AchieveUser проверялось добавлена ли эта запись в базу данных к данному пользователю (типа как закладка, что он сохранил эту запись). При этом к добавленным статьям приписывается "Добавлено".

Я не понимаю как в этом коде, в условие WHERE, подставить id модели(achieve) чтобы он проверял каждую статью в ListView. Или это как-то по-другому делается?

CONTROLLER - AchieveController.php

public function actionIndex()
{
    $searchModel = new AchieveSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    if (AchieveUser::find()->where([
       'id_user' => Yii::$app->user->identity->id, 
       'id_achieve' => ****ЧТО СЮДА ПИСАТЬ****
       ])->exists()){
        $exist="Добавлено";
    }

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
        'exist' => $exist,
    ]);
}

VIEW - index.php

<?= ListView::widget([
    'dataProvider' => $dataProvider,
    'itemOptions' => ['class' => 'item'],
    'itemView' => '_list_item',
    'viewParams' => [
       'exist' => $exist
    ],
]) ?>

VIEW - _list_item.php

<?php
        echo $exist;
        echo $model->title;
    ?>
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
Получите список id записей, которые у пользователя добавлены в закладки.
Затем при отображении списка записей делайте проверку in_array(ID_записи, список_записей_в_закладках).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lxShaDoWxl
Довольно простая задача
VIEW - index.php
<?= ListView::widget([
    'dataProvider' => $dataProvider,
    'itemOptions' => ['class' => 'item'],
    'itemView' => '_list_item',
    'viewParams' => [
       'achieves' => AchieveUser::find()
            ->where([
                'id_user' => Yii::$app->user->identity->id,
            ])
            ->select('id_achieve')
            ->index('id_achieve')
            ->all()
    ],
]) ?>

VIEW - _list_item.php
<?php
        if(isset($achieves[$model->id])){
echo 'Добавлено';
}
        echo $model->title;
    ?><code >
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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