为 Laravel 映射现有的数据库表

Posted

技术标签:

【中文标题】为 Laravel 映射现有的数据库表【英文标题】:Map existing Database table for Laravel 【发布时间】:2014-01-20 11:49:56 【问题描述】:

我正在寻找一种使用 Eloquent ORM 映射项目中现有表并在代码中使用它们的方法。我使用 mysql 数据库并计划迁移到 MSSQL。任何方式点表示赞赏。

【问题讨论】:

映射到底是什么意思?将 eloquent 与现有表一起使用,或更改数据库结构以使用 Laravel。但是,我想,对于这两种情况,您都需要提供数据库和表的结构。 我的意思是我有一个现有的数据库,你想为每个表制作我已经有一个种子并创建地图 1-> 许多模型定义。 @Sangoku “映射”后你有成功创建所有关系吗? 是的,我成功了,但花了一些时间,我不得不构建一个需要相当高的 mysql 用户权限的定义阅读器......这不是主意,但完成了工作。 【参考方案1】:

您必须手动执行此操作。

即,使用 eloquent 为您希望在代码中访问的每个表创建一个 eloquent 模型。

如果您没有名为 created_at 和 updated_at 的时间戳,您可以在模型中禁用这些列。

手动

如果您有一个 users 表,您可以像这样在您的模型文件夹中使用 user.php 文件“映射”它

class User extends Eloquent 

    protected $table = 'users';

    public $timestamps = false;


通过工匠

您可以使用Jeffrey Ways Laravel Generators 来帮助简化模型的初始创建,但您仍需要手动修改时间戳。

【讨论】:

不是有数据库爬虫吗?我可以想出一个,只是问是否有作曲家命令或以前已经做过的事情……讨厌重新发明财富。就像你给它一个表名,他为你创建数据库模型。我即将做出这样的废话,并且不想重拍它。 你可以使用 Jeffrey Ways laravel 生成器来简化一些事情,我会把这个添加到答案中 @duellsy 哪个命令从现有表生成模型? @codecowboy 我不相信有这个命令,这就是为什么我建议你需要手动完成,但上面的答案应该可以帮助你。 实际上,您不需要手动执行此操作(至少不再需要)。 github.com/XCMer/larry-four-generator 应该可以帮助您...您可以使用那个或那个加上 Jeffrey Ways Laravel 生成器来帮助搭建脚手架等。【参考方案2】:

您还可以使用 SQL Server 迁移助手 (SSMA) 将数据库移植到 SQL Server,但您仍需要编写自己的模型以匹配架构。

http://blogs.msdn.com/b/ssma/ http://www.microsoft.com/en-us/download/details.aspx?id=43688

不过,这可能有助于从难题的两面走到一半。

【讨论】:

【参考方案3】:

这看起来像一个旧帖子,但它是几天前编辑的,所以我不知道原作者是否正在寻找解决方案,但如果有人需要这个信息,这里是一个 packagegist 包Laravel 5 可以满足您的要求。

来自现有模式的 Laravel 5 模型生成器: https://packagist.org/packages/ignasbernotas/laravel-model-generator

希望对某人有所帮助!

【讨论】:

【参考方案4】:

还有一个Eloquent Model Generator 库。它可用于使用数据库表作为源生成 Eloquent 模型。生成的模型将包括关系方法、魔法场和关系的文档块以及一些附加属性。

【讨论】:

【参考方案5】:

这里是另一个:https://github.com/Xethron/migrations-generator。

您只想将这些生成器用于本地开发,因此您不想更新 config/app.php 中的生产提供程序数组。相反,在 app/Providers/AppServiceProvider.php 中添加提供程序。

更多详情请看这里 - https://packagist.org/packages/ignasbernotas/laravel-model-generator#user-content-installation

【讨论】:

以上是关于为 Laravel 映射现有的数据库表的主要内容,如果未能解决你的问题,请参考以下文章

如何解决实体映射中的 Grails 错误重复列?在现有的 Postgresql 数据库上

实体框架6不适用于Temporal表

如何从现有的单表数据库中填充合理的多表 MySQL 数据库?

将 Grails 域对象映射到 JDBC 表/序列

有没有办法将所有现有的表数据转换为 UTF8 排序规则?

使用现有表模式上的数据透视表在雄辩模型中指定关系字段