如何在没有 Eloquent 的情况下创建 Laravel 模型?

Posted

技术标签:

【中文标题】如何在没有 Eloquent 的情况下创建 Laravel 模型?【英文标题】:How to create Laravel Model without Eloquent? 【发布时间】:2014-02-02 09:53:48 【问题描述】:

我不确定,是否可以使用 DB Class 而不是 Eloquent 创建模型?我想远离 ORM。

谢谢

【问题讨论】:

【参考方案1】:

是的,当然有可能。您不需要扩展任何类来制作封装业务逻辑并由调用DB类的方法组成的模型类。

只需像这样在app/models/MyModel.php 中创建模型

class MyModel

    public static function getMyData()
         return DB::table('users')->select('column')->get();

    

那么你应该可以静态调用你的新类:

$data = MyModel::getMyData();

如果您想扩展 DB 类,您可以,虽然您更有可能希望扩展 Database/Builder 类以扩展功能,但这是一个复杂的话题,我怀疑如果这个问题您会问一个非常不同的问题是你所追求的。

我最后要指出的是,我不会避开 Eloquent,它是 Laravel 最伟大的地方,也是许多其他伟大的东西

【讨论】:

我总是避免在应用程序设计中添加 ORM/不必要的层。它可能会让开发人员高兴,但不会让用户高兴。感谢您的回答! @Votail3 各有特色,但我发现性能相当,更少的代码意味着更少的错误和更多的时间让开发人员创建新功能以让这些用户满意,再加上我提到的用户现在遇到的错误更少非常高兴,我的开发人员也是如此。 Eloquent 让世界变得更快乐,但我很欣赏他们可能会放弃它的情况。很棒的是,您可以轻松混合各种方法,或许可以专注于瓶颈查询优化。 它说:* MyModel Class Not found* 当我尝试调用 Controller 时 如果 MyModel 直接位于您的 Models 文件夹中,则不应该,但如果它位于子文件夹或其他位置,则需要从命令行运行 php artisan dump-autoload 它在 autoload_map.php 文件中添加了一个新模型的entry。要么手动执行,要么运行自动加载转储命令【参考方案2】:

只需删除“extends Eloquent”并使用 DB 类构建查询。

【讨论】:

猜猜不可能***.com/questions/16753029/… 您不应该改为扩展 DB 类。那么这是可能的。只需在模型方法中使用 DB 类即可。

以上是关于如何在没有 Eloquent 的情况下创建 Laravel 模型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 N+1 问题和加载整个模型的情况下计算 eloquent 关系?

如何在没有 Laravel 尝试将其保存到数据库的情况下在 Eloquent 模型中使用受保护的属性

Laravel:在没有 Eloquent 的情况下在视图中显示数据

如何在没有角度2的集合的情况下循环[关闭]

如何在给定键和值数组的情况下有效地在 Eloquent 中进行大规模更新

如何测试依赖于具有关系的 Eloquent 模型的类?