laravel - 我可以将 laravel 集合作为模型吗?或其他方式制作“收藏模型”?
问题描述
我目前使用 laravel 5.8。有没有办法将Illuminate\Support\Collection
对象作为模型?目标是创建一个模型,该模型也可用作集合,并且该模型上将存在多态关系。我无法得到它的清晰图片。
就在写这个问题之前,我尝试扩展模型类本身并在里面存储一个集合。操作收藏品时感觉有些笨拙。如果我希望我的模型和收藏一样工作,我应该怎么做?
编辑 A - 实际问题
显然,这个问题在某种程度上是不恰当的。我实际上想要做的是存储列表。该列表包含几个模型扩展对象和其他列表对象,如下所示。
$parentCollection = [
1,
2,
childCollection = [ 3a, 3b, 3c, collection3d = [], ... ],
, ...
]
我必须处理嵌套集合和集合本身。存储它,加载它.. 之类的东西。
编辑 B - 自身的嵌套集合
感谢评论。我看到嵌套集合本身已经从您的评论中解决了。当我尝试这个时,首先,我创建了一个名为 的类Type
,Test
它们是Model
类的扩展并且它包装了Doctrine\Common\Collections\ArrayCollection
. 那两者Type
,Test
与其实体类有着多态关系CollectionItem
。
这种方式立即导致两个问题。(1) 我不能在Type
课堂上直接操作收集数据。(2) 如果我想要我的Type
,Test
会有其他Type
的,Test
或者可能的其他多态相关的集合,那我怎么想不通。
原谅我拙劣的解释。英语不是我的语言,所以总是很难写出我认为是一种艰苦的工作。
解决方案
尝试在您的数据库中创建一个视图并为它制作一个模型,就像一个普通的表一样。
您需要在模型中使用此设置:
protected $table = 'name_of_view';
要在迁移中创建视图,请使用以下内容:
// up method
DB::raw('create or replace view name_of_view ....');
// down method
DB::raw('drop if exists view name_of_view ...');
推荐阅读
- c# - C#:使用 PDFsharp 创建 PDF 表单 (AcroForm)
- php - 在 laravel 中如何在方法中传递请求实例
- sql-server - Terada 中的 BIGINT 到 INT 转换
- javascript - 如果当前显示虚拟键盘,则提交表单按钮需要在移动设备上单击两次
- gradle - 使用 Gradle 配置 Swagger 代码生成器。提供的 Gradle 脚本如何工作?
- java - 有没有办法使用意图将任何类型的文件附加到电子邮件中?
- javascript - 使用 .filter 从数组中删除一个项目并返回新数组
- c# - 如何在 .Net C# Windows 窗体中将文件上传到 Firebase 存储?
- python - 如何增强脚本以从多个 CSV 文件中查找
- c# - 为什么这个属性没有在我的 mvc 项目中被序列化?