首页 > 解决方案 > Laravel Model 有很多不同类型的模型(模型的集合)

问题描述

我有Book,MagazineSong模型。

我想制作一个Collection包含这三种类型模型的模型,所以我可以像这样查询它(伪代码):

Collection->get()

并得到与此类似的结果:

[
  {Book_1}
  {Magazine_1}
  {Book_2}
  {Song_1}
  {Book_3}
  ...
]

是否可以在 Laravel 中进行,我将如何解决这个问题?

我查看了多态关系,但据我了解,一次只能获得一种类型的关系(books()、magazines()、songs()),而不是它们的混合。

标签: phplaraveleloquentrelational-database

解决方案


Acollection在 Laravel 中已经是一个“事物”(就像一个关键字),它是一个数组的包装类。也许你可以使用“媒体”之类的东西。如果所有表都有相同的列,您可以使用union或创建 3 个查询和 concat结果。

$books = Book::all();
$songs = Song::all();
$magazines = Magazine::all();

$media = collect([$books, $songs, $magazines]);

推荐阅读