首页 > 解决方案 > Laravel 动态数据库表名

问题描述

有没有办法在 Laravel 中动态创建数据库表。我有一个 Laravel 构建,它有一个使用迁移工具的引号数据库模式。将有几个客户使用该系统,每个客户都需要有自己的数据库表。

我想要发生的是,当客户调用一个函数时,它将使用引号模式创建一个新表,如“customer1_quotes”,并在将来为客户使用该表。此外,当迁移运行时,它会将更新应用于具有给定名称结构 (*_quotes) 的所有表。

如果有人有实现此目的的详细信息或推荐的替代方法,请留言:)

标签: databaselaraveldynamicmigration

解决方案


创建观察者使用的特征

创建一个遍历您的客户并创建/更新表的特征。您不必在迁移中调用DB::.
使用create/update控制器中的特征或更好的模型create/update观察者。您还可以创建用于手动触发或测试的控制台命令。

这不应该在维护期间执行。使用php artisan down应确保在迁移期间不运行任何作业。

表的迁移可以通过使用和/或customer{id}_quotes查询表名来遍历可用表。请参阅下面的链接。LIKEREGEXP

链接

编辑:可重复的迁移可能不会很好地工作,并且会让其他人感到困惑。使用 trait 来灵活地用于观察者会更好。


推荐阅读