我正在建立一个包含主题和评论的论坛。线程和注释都可以报告。所以我有3个模型:主题,评论和报告。
报告表应同时用于线程和注释,以便用户报告垃圾邮件和骚扰。它包含以下列:
$table->increments('id');
$table->string('reported_type');
$table->unsignedInteger('reported_id');
reported_type可以是“线程”或“注释”,并且reported_id是相应线程的ID。
现在,我正在努力与雄辩的人建立适当的关系。因为在“线程”模型中,我不能只说
public function reports()
{
return $this->hasMany(Report::class, 'reported_id');
}
因为不清楚该ID是属于注释还是线程。
对此有什么解决方案?我真的只想使用一个报表表来简化它。
谢谢!
答案 0 :(得分:3)
您可以在雄辩的关系中添加其他条件,例如:
public function reports()
{
return $this->hasMany(Report::class, 'reported_id')->where('reported_type', 'thread');
}
与其他模型相同
答案 1 :(得分:1)