Laravel 5.2为foreach()提供的参数无效

时间:2017-11-11 07:51:50

标签: php laravel laravel-5 foreach laravel-5.2

我正在尝试显示来自两个数据库表的数据,并且我收到错误消息为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');
     }

1 个答案:

答案 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