【发布时间】:2019-04-26 17:56:09
【问题描述】:
我有 3 张桌子:
- 活动
- 年龄
- 书籍
我通过以下方式将它们联系起来:
-
年龄
- 身份证
- 姓名
-
书籍
- 身份证
- 标题
-
年龄书
- 身份证
- age_id
- book_id
-
事件
- 身份证
- 姓名
-
event_age
- 身份证
- event_id
- age_id
-
event_age_book
- event_age_id
- book_id
基本上,一本书可以有多个时代,一个时代可以有很多书,一个事件可以有很多时代,一个事件时代可以有很多书。
我的事件模型看起来像这样,并且可以很好地获取所有事件年龄
class Event extends Model
{
public function ages()
{
return $this->belongsToMany(Age::class, 'event_age');
}
}
年龄模型:
class Age extends Model
{
public function books(): BelongsToMany
{
return $this
->belongsToMany(Book::class)
->withTimestamps();
}
}
图书模型
class Book extends Model
{
public function ages(): BelongsToMany
{
return $this
->belongsToMany(Age::class, 'book_age', 'book_id','age_id')
->withTimestamps();
}
}
我无法弄清楚如何获得所有版本的年龄书籍,是否可以在 Event 模型上做到这一点?
【问题讨论】:
-
我无法弄清楚为什么您有最后一张桌子 event_age_book 似乎是多余的,并且容易使您的生活变得不必要地复杂。或许您可以解释一下为什么需要最后一张桌子?
-
@J.A.Streich 我需要 event_age_book,因为 event_age 只会包含该年龄的几本书,而不是与该年龄相关的所有书籍。
标签: php laravel orm eloquent model