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】:您可以这样做,因为Model
和DB
外观都实现了产生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() 的区别
Django 测试 django.db.utils.ProgrammingError:(1146,“表 'DB.Table' 不存在”)