【发布时间】:2016-01-10 16:00:42
【问题描述】:
我想使用列表视图小部件显示用户喜欢的帖子,因此数据提供者必须包含正确的记录,因为我不想在我的视图中进行任何查询。
我可以在我的视图中使用以下内容访问帖子数据:
<?php foreach ($likedposts as $post) { ?>
<?php var_dump($post->likedpost['title']); ?>
<?php } ?>
我的控制器如下:
public function actionIndex()
{
$user_id = Yii::$app->user->id;
$likedposts = Likedposts::find()->where([ 'user_id' => $user_id])->all();
return $this->render('index', [
'likedposts' => $likedposts,
]);
}
我希望能够访问以下数据:
<?php foreach ($likedposts as $model) { ?>
<?php var_dump($model->title); ?>
<?php } ?>
架构
用户
-id
-名称
-电子邮件
-密码
博文
-id
-标题
-内容
喜欢的帖子
-id
-post_id
-user_id
更新:
下面的第一个变量我需要获取所有喜欢的帖子,但是我只需要从表中选择 post_id,因为它将在 dataprovider 中使用,然后它将获取所有 id 属于 likepost 变量的帖子(可能需要创建一个变量数组吗?)
$likedposts = Likedposts::find()->where([ 'user_id' => $user_id])->all();
$dataProvider = Posts::find()->where(['id'] => $likedposts->post_id])->all();
UPDATE 2(仅适用于一个/单个记录)
$user_id = Yii::$app->user->id;
//if i can change ->one() to all() it breaks
$likedposts = Likedposts::find()->where([ 'user_id' => $user_id])->one();
$DataProvider = new ActiveDataProvider([
'query' => Posts::find()->
where(['id' => $likedposts->post_id])->
orderBy('id DESC'),
'pagination' => [
'pageSize' => 20,
],
]);
return $this->render('index', [
'DataProvider' => $DataProvider,
]);
如果我使用 all() 会出现错误
试图获取非对象的属性
【问题讨论】:
-
你问的不是很清楚。
-
@MarcoAltieri 我想要呈现部分的列表视图小部件但是我无法使用它,因为它包含以下 $model->title 使用我有权访问的数据获取标题我必须使用 $post->likedpost['title']