【发布时间】:2019-01-15 15:45:41
【问题描述】:
(我来自 Visual Studio + Entity Framework 背景,并试图在 Laravel + Eloquent 中找到等效功能)
在 EF 和 Visual Studio 中,我们向我们的应用程序添加一个新模型,并告诉它我们现有的数据库。然后,EF 可以为我的表生成具有列公共属性的模型。这为我们提供了所有 IDE 和编译器优势,例如 Intellisense、拼写错误检测等。
我最近表示要探索 VS Code、Laravel 和 Eloquent。浏览所有这些教程和文章,我不确定这些属性何时以及如何在模型类中生成。我刚刚尝试了artisan make:model 命令,它确实生成了模型类,但其中没有属性。所以,
- 我应该手写吗? (真的吗?)
- 这些只是公共变量还是带有 getter/setter 的标准属性(请原谅我的 .NET 心态 :))?
- 是否有工具/扩展可以检查我的数据库并创建具有列属性的模型?
更新
感谢回答我问题的人,非常感谢。另外,我发布的一些 cmets 是由于我对 PHP(奇怪的 IMO)关于会员访问的方法一无所知;我刚刚发现 PHP 不会抱怨不存在的类成员,而是动态生成它们(例如 $post->NonExistingMember = SomeValue 运行正常;这甚至不会在我知道的大多数其他语言中编译)。给我很大的惊喜。我在其他几种语言中使用过 C++、VB、C#、Java,并且在其他任何地方都没有看到过这种行为。所有这些语言都会立即抛出编译时错误,说诸如 Type X 不包含名为 Y 的成员。看不到 PHP 的不同方法如何与 OOP 结合在一起。
我发布此问题的实际问题仍未解决。虽然我可以使用reliese/laravel 为我的数据库生成模型类,但该工具仍然不会针对表列生成类成员,因此我没有获得自动完成的好处。如果可以(当然是自动完成),我很乐意听取专家的意见。
更新 2
现在我对 Laravel 环境有了更好的了解,我想我会分享我的经验。请参阅下面的答案。
【问题讨论】:
-
也许这可以帮助你:*.com/questions/30560485/…
-
也许这会有所帮助:Laravel: Eloquent Getting Started。但基本上,是的,你是手写的。有一些可用的包可以从现有数据库生成模型
-
@RafaelBoszko:这击中了头上的钉子(钉子的头是:))。谢谢。
-
您是否曾经解决过此问题以便获得自动完成的好处?我也来自 C#,并且习惯于更明确而不是“自动”的东西。
-
@LouiseEggleton:我花了更多时间在 Laravel 上工作。基本问题(或称其为特性)是类不需要在编译时包含成员,因为可以说没有编译时。 PHP 在运行时解释代码并动态生成成员。所以模型类根本不需要你有任何成员。这与 C# 世界中的强类型模型(实体甚至数据集)非常不同,在类属性和底层表列之间具有 1-1 对应关系。所有这意味着 VS Code 中不会有自动完成的东西Laravel。
标签: php laravel orm model eloquent