我一直在试用Laravel 5作为Spring启动设置的替代品。
$employees = App\Employee::all();
$employees = DB::table('employees')->get();
我已经读过这两行代码执行完全相同的操作,从我的'员工那里检索所有记录。表。这在某种程度上是正确的,但是第一行虽然更简洁,但却提供了更加冗长和嵌套的集合,代表了相同数量的记录
Employee {#180 ▼
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:3 [▶]
#original: array:3 [▶]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}
vs
{#173 ▼
+"id": 3
+"username": "deren"
+"password": "noob"
}
对于第一个集合,与第二个集合相同的信息包含在原始集合中。两者之间的区别是什么?为什么通过Eloquent的第一个查询包含更多的元数据?我觉得它与它提供的口才(原谅双关语)相矛盾,特别是考虑到我不知道如何在原始内部访问数组。我使用dd()转储包含集合的变量,如果这会产生影响。
答案 0 :(得分:2)
$employees = App\Employee::all();
这将读取数据库表,将每一行转换为特定模型类的实例,并返回它们所有添加的属性,方法等。
$employees = DB::table('employees')->get();
这将读取数据库表并将每一行转换为标准类。它不了解模型。