DB::table('table') 和 model::('table') 的区别

Posted

技术标签:

【中文标题】DB::table(\'table\') 和 model::(\'table\') 的区别【英文标题】:Difference between DB::table('table') and model::('table')DB::table('table') 和 model::('table') 的区别 【发布时间】:2016-09-02 20:33:28 【问题描述】:

在 laravel 上,我们可以使用 DB::table('table')->get();model::('table')->all(); 访问 我的问题是它们之间有什么区别?

谢谢。

【问题讨论】:

【参考方案1】:

您可以这样做,因为ModelDB 外观都实现了产生Builder 实例的函数。

https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.htmlhttps://laravel.com/api/5.2/Illuminate/Database/Query/Builder.html

不同之处在于,Model 的实例具有使用预先指定的信息、like 表设置Builder 的属性,并且还为其提供事件、关系信息、特定静态绑定和一堆其他方便的助手,它们限制对象并使面向对象编程更容易。

所以是的,您可以使用模型,然后获取查询 Builder 对象并更改其表(就像您可以更改有关 Builder 的任何其他内容一样),但它与专门设计用于构建查询的系统作斗争更容易。

本质上,Laravel 所做的是采用 Symfony2 框架并对其进行精简,因此一切都变得更简单。模型就是这样的一个例子。

【讨论】:

以上是关于DB::table('table') 和 model::('table') 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Laravel DB::insert() 和 DB::table()->insert() 的区别

带有 DB::table 的 laravel 加载函数

Django 测试 django.db.utils.ProgrammingError:(1146,“表 'DB.Table' 不存在”)

在啥情况下 db.define_table() 会返回 None

Laravel DB::table 更新字段

php 向现有的db table / create table添加新字段