Laravel发表评论错误

时间:2015-02-16 14:42:10

标签: php laravel

所以我创建了一个登录用户的应用程序,用户可以发帖,现在帖子工作得很好但是当我放置评论功能时,我收到错误“为foreach()提供的无效参数”

我在Post模型中有这个

<?php

    class Post extends Eloquent{

        protected $fillable = array('email', 'password','title','content');

        protected $table = 'posts';

        public function User()
        {
            return $this->belongsTo('User');
        }

        public function Comment()
        {
            return $this->hasMany('Comment', 'post_id');
        }
    }

在我的评论模型中

<?php


    class Comments extends Eloquent {

        public function post()
        {
            return $this->belongsTo('Post');
        }
    }

我在我的控制器中有这个

public function viewPost($id)
    {   
        $post = Post::find($id);
        $user = Auth::user();
        $this->layout->content = View::make('interface.viewPost')->with('posts', $post )->with('users',$user);

    }

在我的观点中

<section class="comments">  
            @foreach($posts->comments as $comment)
            <blockquote>{{$comment->content}}</blockquote>
            @endforeach
        </section>

现在当我尝试运行dd($ posts-&gt; comment)

它返回null,因为注释表为空。现在我想知道的是为什么我得到这个错误?感谢您的帮助我只是好奇为什么这个错误正在返回,我想解决这个问题

1 个答案:

答案 0 :(得分:0)

在您的帖子模型Comment中,函数名称不是comments,而是在hasMany方法调用下与错误名称模型建立关系的Comment方法。

public function Comment()
        {
            return $this->hasMany('Comments', 'post_id');
        }

尝试使用

@foreach($posts->Comment as $comment)

如果仍然无法访问,请尝试急切加载。 比如你的控制器

$post = Post::with("comment")->find($id);