所以我创建了一个登录用户的应用程序,用户可以发帖,现在帖子工作得很好但是当我放置评论功能时,我收到错误“为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,因为注释表为空。现在我想知道的是为什么我得到这个错误?感谢您的帮助我只是好奇为什么这个错误正在返回,我想解决这个问题
答案 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);