database - Laravel 动态数据库表名
问题描述
有没有办法在 Laravel 中动态创建数据库表。我有一个 Laravel 构建,它有一个使用迁移工具的引号数据库模式。将有几个客户使用该系统,每个客户都需要有自己的数据库表。
我想要发生的是,当客户调用一个函数时,它将使用引号模式创建一个新表,如“customer1_quotes”,并在将来为客户使用该表。此外,当迁移运行时,它会将更新应用于具有给定名称结构 (*_quotes) 的所有表。
如果有人有实现此目的的详细信息或推荐的替代方法,请留言:)
解决方案
创建观察者使用的特征
创建一个遍历您的客户并创建/更新表的特征。您不必在迁移中调用DB::
.
使用create
/update
控制器中的特征或更好的模型create
/update
观察者。您还可以创建用于手动触发或测试的控制台命令。
这不应该在维护期间执行。使用php artisan down
应确保在迁移期间不运行任何作业。
表的迁移可以通过使用和/或customer{id}_quotes
查询表名来遍历可用表。请参阅下面的链接。LIKE
REGEXP
链接
- Laravel 模型观察者
- 如何在 Eloquent 模型中动态设置表名
- Laravel 的表格
Blueprint
文档 (5.8) LIKE
使用or获取表名REGEXP
- 优化:获取查询生成器结果时分块结果
编辑:可重复的迁移可能不会很好地工作,并且会让其他人感到困惑。使用 trait 来灵活地用于观察者会更好。
推荐阅读
- uwp - 使用 ReactiveUI 包的通用 Windows 应用程序无法在发布模式下构建
- javascript - 如何从多个子组件中获取表单值?
- reactjs - Javascript React:推送到 useState 中的数组
- multithreading - 如何在Queue中实现并发
- python - 需要从基于字符串的文本文件中查找动态变化的整数
- mongodb - 如何检查mongodb数据中是否存在字段
- .htaccess - 从根目录重定向到子目录后如何从子目录运行opencart
- docker - 使用 scp 在两个 docker 容器之间复制文件
- hyperledger-fabric - 在超级账本结构的 chaicode 中执行大量事务时超时到期
- c# - 如何使用 C# 使用 ALSA 在 Linux 中获取和设置音量?