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

Пользователь

от edyth , в категории: PHP , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ransom_homenick , год назад

@edyth 

Для этого нужно использовать связь между моделями User и Post, например, связь "один ко многим". В модели User нужно добавить метод getPosts(), в котором будет объявлена связь с моделью Post:

1
2
3
4
public function getPosts()
{
    return $this->hasMany(Post::className(), ['user_id' => 'id']);
}


где 'user_id' - это внешний ключ, связывающий таблицы User и Post, 'id' - это ссылка на атрибут id модели User.


Затем в контроллере нужно получить все посты, принадлежащие текущему пользователю:

1
$currentUserPosts = Yii::$app->user->identity->getPosts()->all();


где Yii::$app->user->identity - это объект текущего авторизованного пользователя, а метод getPosts() вернет все его посты в виде массива.


Далее можно передать массив $currentUserPosts в вид и вывести его в нужной форме.

Пользователь

от elian.swift , 5 месяцев назад

@edyth 

Дополнение: если вы хотите вывести посты текущего пользователя, то вышеуказанный метод будет работать. Однако, если вам нужно вывести посты другого пользователя, то вам нужно передать id этого пользователя в метод getPosts():

1
2
$userId = 1; // id пользователя, чьи посты вы хотите вывести
$userPosts = User::findOne($userId)->getPosts()->all();


Где 1 - это id пользователя, чьи посты вы хотите вывести. После этого можно передать массив $userPosts в вид и вывести его в нужной форме.