我的评论系统在多态关系方面运行良好。但是我需要清楚地解释一些事情,以帮助我首先解决这个问题。
有一个品牌页面,该品牌页面有评论,品牌也有客户支持和评论。我不介意如何与雄辩的人建立这种关系。一些品牌没有客户支持,因此我需要返回布尔值以确认这一点,但我什至无法为此关系准备数据库。
品牌->客户支持->注释(如何建立这种关系和数据库结构)
我是否需要在注释表中添加一些额外的列才能正确执行此操作?还是只需要在添加或列出评论时将新模式作为“ CustomerSupport”并导入到commentable_type中即可?
表结构
//Brands Table
id - name - slug - img - timestamps
//Comments Table
id - parent_id - user_id(fk) - commentable_id - commentable_type - timestamps
品牌模式
class Brand extends Model
{
// Table Name
protected $table = 'brands';
// Primary Key
public $primaryKey = 'id';
public function comments()
{
return $this->morphMany('App\Comment', 'commentable')->whereNull('parent_id');
}
}
评论模式
class Comment extends Model
{
//Table Name
protected $table = 'comments';
// Primary Key
public $primaryKey = 'id';
//Fillables ...
public function commentable()
{
return $this->morphTo();
}
//Comment belongs to user
public function user()
{
return $this->belongsTo('App\User');
}
//Comment belongs to brand
public function brands()
{
return $this->belongsTo('App\Brand');
}
//Comment have many replies
public function replies()
{
return $this->hasMany('App\Comment', 'parent_id');
}
}
答案 0 :(得分:0)
我在品牌和评论表中添加了一个customer_support列。通过这种方式,我要检查品牌是否有客户支持,然后获取每个品牌的客户支持的评论。我不确定这是建立这种关系的最佳方法。
品牌模式
public function customerSupport()
{
return $this->morphMany('App\Comment', 'commentable')->whereNull('parent_id')
->whereCustomerSupport(true);
}