DB::table(‘foo’) 和new FooModel使用上的区别
使用DB创建的builder对象和Model对象使用get()方法查询出的结果形式一样,都是集合,使用first查询出的结果前者为stdclass对象(因为没有像FooModel一样的对象作为载体),后者为FooModel对象,所以对查询结果使用toArray前者的get()会得到一个由多个stdclass组成的数组,后者的get()会得到一个二维数组,first()则是前者为stdclass,后者为数组。
所以Model的toArray才是真正意义上的toArray,stdclass由于没有继承arrayAble所以使用toArray对其无效。
builder get()结果:
model get()结果:
builder get()->toArray()结果:
model get()->toArray()结果:
至于first()->toArray()看上图就知道是stdclass和array的区别
其实不执行toArray方法collection和Model也能当array使用(二者都继承了Arrayable),但是stdClass就不行了,只能以$foo->…的形式取值。