有没有一种方法可以在Laravel中动态创建数据库表。我有一个Laravel版本,该版本使用迁移工具为报价提供了数据库模式。将有几个使用该系统的客户,每个客户都需要有自己的数据库表。
我想发生的是,当客户调用一个函数时,它将使用报价模式创建一个新表,例如“ customer1_quotes”,并在将来为客户使用该表。另外,在运行迁移时,它将把更新应用于具有给定名称结构(* _quotes)的所有表。
如果有人有实现此目的的详细信息或推荐的替代方法,请发送消息:)
答案 0 :(得分:0)
创建一个特质,该特质遍历您的客户并创建/更新表。您不必进行迁移即可致电DB::
。
在create
/ update
控制器中使用特征,或者对模型create
/ update
的观察者使用更好的特征。您还可以创建控制台命令以进行手动触发或测试。
在维护期间不应执行此操作。使用php artisan down
应该确保在迁移期间没有任何作业。
customer{id}_quotes
表的迁移可以通过使用LIKE
和/或REGEXP
查询表名称来遍历可用表。请参阅下面的链接。
Blueprint
docs (5.8) LIKE
or REGEXP
编辑:可重复的迁移可能无法正常工作,并且会使其他人感到困惑。为此,使用特征以灵活地用于观察者会更好。