【问题标题】:yii2 Getting array of data from one model and listing it in view of anotheryii2 从一个模型获取数据数组并在另一个模型中列出
【发布时间】:2016-12-29 10:17:16
【问题描述】:

在照片控制器中列出照片时,我可以使用函数获取用户数据

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

所以当我在视图中列出一些照片时,我可以使用

访问用户数据库
$model->user['username']

但是,如果我有这张照片的 cmets 数据库怎么办。并希望在列出照片时获得所有评论。

我应该在照片模型中写什么来获取这张照片的所有 cmets 以及如何在视图中列出它们?

在模型中我认为我必须使用这个

public function getComments()
{
    $modelComments = Comments::find()->where(['id'=>'commentID'])->all();
    return [array('modelComments' => $modelComments)];
}

如果这是正确的,我如何根据照片输出所有 cmets?

【问题讨论】:

    标签: arrays view model controller yii2


    【解决方案1】:

    $model->user['username'] 是否有效?应该是$model->user->username

    无论如何设置照片和 cmets 之间的关系,例如与用户但一对多。

    public function getComments()
    {
        return $this->hasMany(Comments::className(), ['id' => 'commentID']);
    }
    

    现在当调用$model->comments 时,您将获得与照片相关的所有Comments 模型的数组。

    显示它们的最简单方法是遍历这个数组,例如:

    foreach ($model->comments as $comment) {
        echo $comment->content . '<br>';
        // assuming column name with actual comment is "content"
    }
    

    【讨论】:

    • 好的,但是你能写下我如何在照片视图中绘制这个数组的例子吗?
    • @Bizley Does $model-&gt;user['username'] work at all? It should be $model-&gt;user-&gt;username.。答案是肯定的。无论如何,作为您答案的补充:@David:在获得所有 cmets 后,您只需要使用例如循环遍历 cmets foreach.
    • @David 我添加了示例
    • 非常感谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2017-05-05
    • 1970-01-01
    • 2019-12-31
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多