实际上,我有两种类型的用户,它们具有两个不同的表(用户表和卖方表)。 我有此字段的注释表:
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('parent_id')->unsigned()->default(0);
$table->text('comment_text');
$table->integer('commentable_id')->unsigned();
$table->string('commentable_type');
$table->timestamps();
});
如何将Seller_id添加到此表?如果卖家想回应用户评论。
消息表相同的问题。
答案 0 :(得分:0)
实际上,好的做法是您必须在用户表中添加一个角色字段,该字段确定用户是用户还是卖方。但是,如果您希望保持表格不变,则无需添加Seller_id,只需使用one to many polymorphic relations。像这样更改您的注释表架构:
Schema::create('comments', function (Blueprint $table) {
$table->increments('id');
$table->integer('parent_id')->unsigned()->default(0);
$table->text('comment_text');
$table->integer('commentable_id')->unsigned();
$table->string('commentable_type');
$table->timestamps();
});
然后在用户和卖方模型中,必须添加如下所示的关系方法:
public function comments()
{
return $this->morphMany('App\Comment', 'commentable');
}
在这样的评论模型中:
public function commentable()
{
return $this->morphTo();
}
然后您可以像这样获得卖方评论:
$seller = App\Seller::find(1);
$seller->comments;
要保存卖家的评论,您可以使用:
$seller = App\Seller::find(1);
$comment = $seller->comments()->create([
'comment_text' => 'A new comment.',
// Add other field
]);