所以,我检查了一个教程,找到一个简单的博客,该博客具有在帖子上发表评论的功能。 我已经完成了我的帖子迁移,我想在帖子中添加评论。 这些帖子有一个项目和描述的图片。 所以我的迁移是:
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts' ,function(Blueprint $table){
$table->increments('id')->unsigned()->unique();
$table->unsignedInteger('user_id')->unsigned();
$table->unsignedInteger('item_id')->unsigned();
$table->string('picture', 255)->nullable();
$table->text('description')->nullable();
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('item_id')
->references('id')
->on('items')
->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('posts');
}
}
所以我有一个包含帖子ID的表格,海报的user_id,张贴图片的项目的item_id,图片和描述。
现在我想,好吧我必须在这些帖子中添加评论,所以我需要一个评论表,我做了一个这样的:
class CreateCommentsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('comments', function(Blueprint $table)
{
$table->increments('id');
$table -> integer('post_id')->unsigned()->default(0);
$table->foreign('post_id')
->references('id')->on('posts')
->onDelete('cascade');
$table -> integer('user_id')->unsigned()->default(0);
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
$table->text('body');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
// drop comment
Schema::drop('comments');
}
}
我有评论的id,评论引用的帖子的post_id,以及评论者和评论团体的user_id。
这应该是一对多的关系问题吧?帖子可以有很多评论。
所以模型是:
class Comment extends Model
{
/**
*
* The comment belongs to one author
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function author()
{
return $this->belongsTo('App\User');
}
/**
*
* The comment belongs to one post
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function post()
{
return $this->belongsTo('App\Post');
}
}
...
class Post extends Model
{
/**
*
* a post has many comments
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function comments()
{
return $this->hasMany('App\Comments');
}
/**
*
* a post belongs to one author
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function author()
{
return $this->belongsTo('App\User');
}
}
...
class User extends Model
{
//..... (some more stuff here not related to comments.
public function comments()
{
return $this->hasMany('App\Comment');
}
}
现在重点是,如果我想返回所有用户帖子的评论和评论作者,我应该如何修改模型?
答案 0 :(得分:0)
$posts_with_comments = Post::with('author', 'comments')->get();
您可以根据需要添加任意数量的关系,查看热切的文档
答案 1 :(得分:0)
试试这个
$user = Auth::user(); $posts = Post::with('comments', 'author')->where('user_id', $user->id )->get();
您在“where”
中使用的是用户对象而不是用户ID