Как вывести посты принадлежащие пользователю

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Как вывести посты принадлежащие пользователю

Сообщение alexa777 »

Вопрос такой, как вывести посты принадлежащие пользователю. То есть я авторизируюсь и захожу в посты frontend/web/index.php?r=post%2Findex и там отображаются посты абсолютно любых юзеров. А надо чтобы выводились только те которые я добавил.

как мне изменить этот экшен ?

Код: Выделить всё

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

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как вывести посты принадлежащие пользователю

Сообщение ElisDN »

Код: Выделить всё

$searchModel->search(Yii::$app->request->queryParams, Yii::$app->user->id);
И там в andFilterWhere добавить 'user_id' => $userId.
BalykhinAS
Сообщения: 179
Зарегистрирован: 2018.02.05, 13:41
Контактная информация:

Re: Как вывести посты принадлежащие пользователю

Сообщение BalykhinAS »

alexa777 писал(а): 2018.02.19, 12:39 Вопрос такой, как вывести посты принадлежащие пользователю. То есть я авторизируюсь и захожу в посты frontend/web/index.php?r=post%2Findex и там отображаются посты абсолютно любых юзеров. А надо чтобы выводились только те которые я добавил.

как мне изменить этот экшен ?

Код: Выделить всё

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

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
через связи http://stuff.cebe.cc/yii2docs-ru/guide- ... -relations или если в таблице есть к прмиру user_id запросом ->where() http://stuff.cebe.cc/yii2docs-ru/guide- ... html#where
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Как вывести посты принадлежащие пользователю

Сообщение alexa777 »

ElisDN писал(а): 2018.02.19, 12:46

Код: Выделить всё

$searchModel->search(Yii::$app->request->queryParams, Yii::$app->user->id);
И там в andFilterWhere добавить 'user_id' => $userId.

Сделал в модели вот так

Код: Выделить всё

 public function getUsers()
        {
            return $this->hasOne(User::className(), ['id' => 'user_id']);
        }
и в контролере вот так

Код: Выделить всё

    public function actionIndex()
    {
        $searchModel = new JobSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams)->andFilterWere(['user_id' => $user_id]);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }
Выдает ошибку Undefined variable: user_id
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как вывести посты принадлежащие пользователю

Сообщение Dominus »

В таблице с постами у вас должно быть поле автора поста в котором записывается его id, по нему и производится фильтрация. Если у вас это поле называется author_id то:

Код: Выделить всё

//...
$dataProvider = $searchModel->search(Yii::$app->request->queryParams)->andFilterWere(['author_id' => $user_id]);
//...
$user_id - Ваш id
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Как вывести посты принадлежащие пользователю

Сообщение alexa777 »

Dominus писал(а): 2018.02.19, 13:48 В таблице с постами у вас должно быть поле автора поста в котором записывается его id, по нему и производится фильтрация. Если у вас это поле называется author_id то:

Код: Выделить всё

//...
$dataProvider = $searchModel->search(Yii::$app->request->queryParams)->andFilterWere(['author_id' => $user_id]);
//...
$user_id - Ваш id
Оно у меня есть называется user_id
Делаю связь с User в модели Post

Код: Выделить всё

public function getUsers()
        {
            return $this->hasOne(User::className(), ['id' => 'user_id']);
        }

И в контролере PostController

Код: Выделить всё

//...
$dataProvider = $searchModel->search(Yii::$app->request->queryParams)->andFilterWere(['user_id' => $user_id]);
//...
Но все равно ошибка, не может найти переменную user_id, как только местами их не менял все равно ошибка, не может найти переменную
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как вывести посты принадлежащие пользователю

Сообщение andku83 »

Код: Выделить всё

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->query->andFilterWhere(['user_id' => \Yii::$app->user->id]);
Последний раз редактировалось andku83 2018.02.19, 17:47, всего редактировалось 1 раз.
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как вывести посты принадлежащие пользователю

Сообщение Dominus »

alexa777 писал(а): 2018.02.19, 15:51 Но все равно ошибка, не может найти переменную user_id, как только местами их не менял все равно ошибка, не может найти переменную
Потому что переменная $user_id у вас нигде не объявляется.

Код: Выделить всё

//...
$user_id = Yii::$app->user->id; // ID пользователя
$dataProvider = $searchModel->search(Yii::$app->request->queryParams)->andFilterWere(['user_id' => $user_id]);
//...
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Как вывести посты принадлежащие пользователю

Сообщение alexa777 »

Dominus писал(а): 2018.02.19, 17:26
alexa777 писал(а): 2018.02.19, 15:51 Но все равно ошибка, не может найти переменную user_id, как только местами их не менял все равно ошибка, не может найти переменную
Потому что переменная $user_id у вас нигде не объявляется.

Код: Выделить всё

//...
$user_id = Yii::$app->user->id; // ID авторизованного пользователя
$dataProvider = $searchModel->search(Yii::$app->request->queryParams)->andFilterWere(['user_id' => $user_id]);
//...

Она есть в модели POST
* @property integer $user_id
И в валидации прописана
[['user_id', 'category_id'], 'integer']

и В лейбелах
'user_id' => 'User ID',
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как вывести посты принадлежащие пользователю

Сообщение andku83 »

выше я написал вам решение, а по теме последнего вашего ответа, вы даже не поняли что речь не о атрибуте объекта Post, а о переменной используемой в контроллере
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Как вывести посты принадлежащие пользователю

Сообщение alexa777 »

shnir писал(а): 2018.02.19, 17:33 выше я написал вам решение, а по теме последнего вашего ответа, вы даже не поняли что речь не о атрибуте объекта Post, а о переменной используемой в контроллере
попробоавла Ваш способ, выдало ошибку
Unknown Method – yii\base\UnknownMethodException
Calling unknown method: yii\db\ActiveQuery::andFilterWere()
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как вывести посты принадлежащие пользователю

Сообщение andku83 »

andFilterWere - поменяйте на andWhere
если будет ошибка покажите что у вас происходит в методе search()
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как вывести посты принадлежащие пользователю

Сообщение andku83 »

ошибка в названии метода (потерялась буковка "h") - andFilterWhere
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Как вывести посты принадлежащие пользователю

Сообщение alexa777 »

shnir писал(а): 2018.02.19, 17:47 ошибка в названии метода (потерялась буковка "h") - andFilterWhere
спасибо, помогло, да Ошибка была в букве h, я и сам не заметил)
Ответить