【发布时间】:2021-11-22 19:21:34
【问题描述】:
一个包含两个部分的 Laravel 网站:帖子和产品评论。两者都可以评论。所以我有三个模型:Post、Advisor 和 Comment。
我的考虑
Post.php
| id | title | content |
|---|---|---|
| 1 | post_title_1 | lorem 1 |
| 2 | post_title_2 | lorem 2 |
| 3 | post_title_3 | lorem 3 |
Advisor.php
| id | title | content | link | likes |
|---|---|---|---|---|
| 1 | advisor_title_1 | lorem 1 | www1 | 100 |
| 2 | advisor_title_2 | lorem 2 | www2 | 110 |
| 3 | advisor_title_3 | lorem 3 | www3 | 120 |
Comment.php
| id | related_id | type | comment_content |
|---|---|---|---|
| 1 | 1 | \App\Models\Post | lorem 1 |
| 2 | 1 | \App\Models\Post | lorem 2 |
| 3 | 1 | \App\Models\Advisor | lorem 3 |
// Two Comments for Post with id 1
// One Comment for Advisor with id 1
这就是理论。但我不知道如何写关系。因此我的问题: Post 和 Advisor 模型中的关系应该怎么写?
这些是我的模型,它们的关系仍然“错误”:
Post.php
public function comments() {
return $this->hasMany(Comment::class);
}
Advisor.php
public function comments() {
return $this->hasMany(Comment::class);
}
Comment.php
public function posts() {
return $this->belongsTo(Post::class);
}
public function advisor() {
return $this->belongsTo(Advisor::class);
}
如何重写这三个模型中的关系。以便我可以正确检索以下关系?
- $post->cmets
- $advisor->cmets
- $comment->发布
- $comment->顾问
【问题讨论】:
-
我会查看 polymorphic one-to-many 关系上的 Laravel 文档
标签: laravel