如何创建不依赖Eloquent的Laravel模型?

19

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

谢谢

2个回答

22

当然可以。你不需要扩展任何类来创建一个封装业务逻辑且包含调用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中最伟大的东西,还有很多其他优秀的东西。


3
我总是避免在应用程序设计中使用ORM/不必要的层级。这可能会让开发人员感到满意,但不会让用户满意。谢谢你的回答! - Volatil3
2
@Votail3 每个人有自己的选择,但我发现性能可比较,并且更少的代码意味着更少的错误,让开发人员有更多时间创建新的功能以满足用户的需求。再加上我提到的更少的错误,我的用户现在感到非常高兴,我的开发人员也是如此。Eloquent 让这个世界变得更加美好,但我很欣赏他们在某些情况下可能会放弃它。最好的事情是你可以轻松地混合各种方法,也许重点在于瓶颈查询优化。 - SwiftD
它会在autoload_map.php文件中添加一个新模型的条目。可以手动添加,也可以运行autoload dump命令。 - Volatil3
你需要通过谷歌搜索来确认我的说法,但我相信dump-autoload会预加载一些类,但这需要一些时间。我认为你也可以在compile.php配置文件中添加条目,在global.php启动文件或composer.json中添加目录。 - SwiftD
模型、控制器和视图不应该已经在路径中吗?我不明白为什么它不能感知模型文件夹中的新文件。 - Volatil3
显示剩余6条评论

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

猜想这是不可能的。 - Volatil3
1
你不应该继承DB类。相反,你可以在Model方法中使用DB类。这样做是可行的。 - Ronald Hulshof

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接