【发布时间】:2015-09-15 00:54:12
【问题描述】:
我正在使用 Laravel 5.1。
我有三张桌子。
- 电影
- 视频
- 视频类别
用户可以创建一部电影并添加许多视频,但每个视频都应属于任何一个类别(例如,制作视频、预告片视频、电影活动)。
现在我想通过传递电影 ID 来获取每个视频的所有电影、视频和视频类别。
表结构
电影表
filmID | filmName
-----------------
1 | Film 1
2 | Film 2
视频表
videoID | filmId | catID | videoURL
-----------------------------------
1 | 1 | cat1 | URL 1
2 | 1 | cat2 | URL 2
视频分类表
catID | category
--------------------
cat1 | Trailer
cat2 | Making
cat3 | Events
我可以通过传递 FilmID 获取所有视频
{
filmId: "filmName",
filmName: "Film Name",
coverPhoto: "image URL",
created_at: "2015-06-28 06:35:26",
updated_at: "2015-06-28 06:35:45",
videos: [
{
id: 7,
filmId: "filmID",
videoCategory: "trailer",
videoUrl: "h41Jb29P4",
created_at: "2015-06-28 11:40:22",
updated_at: "2015-06-28 11:40:22"
}
]
}
但是我如何获得视频类别以及此输出。像这样的
{
filmId: "filmName",
filmName: "Film Name",
coverPhoto: "image URL",
created_at: "2015-06-28 06:35:26",
updated_at: "2015-06-28 06:35:45",
videos: [
{
id: 7,
filmId: "filmID",
videoCategory: "trailer",
videoUrl: "h41Jb29P4",
created_at: "2015-06-28 11:40:22",
updated_at: "2015-06-28 11:40:22"
videoCategory: [
{
videoCategoryId: "1",
videoCategoryName: "Trailer"
}
]
}
]
}
有什么办法可以不用在 PHP 中传递多个查询和合并?
请任何人帮助我。
【问题讨论】:
-
是的,我自己找到了答案。我在 Laravel 中使用了 Nested Eager loading Concept laravel.com/docs/5.0/eloquent#eager-loading
标签: php mysql database database-design laravel-5