嗯,我对Laravel非常新。所以我实际上正在学习Laracast的基础知识。我有一个叫做歌曲的表,一个模型Song.php
如下:
<?php namespace App;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Song extends Eloquent{
}
和控制器SongsController.php
:
use App\Song;
use DB;
class SongsController extends Controller
{
function index() {
$songs = Song::get();
$songs2 = DB::table('songs')->get();dd($songs2);
//$mysong2 = Song::whereSlug('as-long-as-you-love-me')->first();
}
}
所以我希望$songs
和$songs2
相同并产生相同的结果。但是dd($songs)
会产生如下结果:
Collection {#146 ▼
#items: array:1 [▼
0 => Song {#147 ▼
#connection: null
#table: null
#primaryKey: "id"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:6 [▼
"id" => "1"
"title" => "As Long as you Love me"
"slug" => "as-long-as-you-love-me"
"lyrics" => null
"created_at" => "2015-06-21 00:00:00"
"updated_at" => "2015-06-21 00:00:00"
]
#original: array:6 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#fillable: []
#guarded: array:1 [▶]
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
}
]
}
和$songs2
产生(我认为是实际的,但不确定):
array:1 [▼
0 => {#145 ▼
+"id": "1"
+"title": "As Long as you Love me"
+"slug": "as-long-as-you-love-me"
+"lyrics": null
+"created_at": "2015-06-21 00:00:00"
+"updated_at": "2015-06-21 00:00:00"
}
]
所以我想知道我应该使用哪一个?我有什么错误吗?
答案 0 :(得分:0)
没有错误。
对于您正在使用功能 get()的美妙歌曲,它将始终返回类型为11a的对象
Illuminate \ Database \ Eloquent \ Collection
但对于$ songs2,你使用查询构建器,函数 get(),它将始终返回一个数组
stdClass 对象。
这就是为什么你会看到不同的结果
两者都是正确的,你可以使用它们,但如果你已经为你的歌曲创建了一个模型,那么使用eloquent而不是查询构建器。