我正在尝试显示来自两个数据库表的数据,并且我收到错误消息为foreach()提供的无效参数。任何人都知道我如何解决这个错误?
注意:我是laravel的新手
这是我的控制器:
$post = PostModel::find($post_id);
$comment = new CommentModel;
我的PostModel:
public function comments() {
return $this->belongsTo('App\CommentModel');
}
我的CommentModel:
public function post() {
return $this->belongsTo('App\PostModel');
}
我想要在我的视图页面上显示我的数据库模型:
@foreach($post->comments as $comment)
<div class="comment">
<div class="author-info">
<div class="author-name">
<h4>{{ $comment->name }}</h4>
</div>
</div>
<div class="comment-content">
{{ $comment->comment }}
</div>
</div>
@endforeach
这是我的评论表
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email');
$table->text('comment');
$table->boolean('approved');
$table->integer('post_id')->unsigned();
$table->timestamps();
});
Schema::table('comments', function ($table){
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
});
}
public function down()
{
Schema::dropForeign(['post_id']);
Schema::drop('comments');
}
答案 0 :(得分:0)
使用 belongsTo()定义的关系只返回一个对象,而不是集合。这就是为什么你不能用 foreach 迭代它。
替换
public function comments() {
return $this->belongsTo('App\CommentModel');
}
与
public function comments() {
return $this->hasMany('App\CommentModel', 'post_id');
}
您可以在此处详细了解如何使用Eloquent定义不同类型的关系:https://laravel.com/docs/5.2/eloquent-relationships