2 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
這是因?yàn)槟褂肻DB::table('users')的是獨(dú)立于您的模型和代碼結(jié)構(gòu)的。這就像直接在數(shù)據(jù)庫(kù)上運(yùn)行查詢一樣,laravel 無(wú)法知道結(jié)果是User包含所有字段的完整結(jié)果。
利用
$userGet = \App\User::query()
->where('id','=', 1)
->get()[0]
echo get_class($userGet) // -> App\User

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
這不是因?yàn)槭褂胓et()方法。這是因?yàn)槭褂昧薉B門面。
如果您使用模型外觀進(jìn)行查詢,則每個(gè)對(duì)象都將轉(zhuǎn)換為特定的模型對(duì)象。
該get()函數(shù)將返回一個(gè)Eloquent Collection而不是一個(gè)對(duì)象。
// this is a collection of users
$users = User::where('id', 1)->get();
因此,如果您想要該集合中的一個(gè)對(duì)象,您可以first()在它之后調(diào)用。
(而不是調(diào)用數(shù)組索引 [0] )。
// this one is ok too.
// but it's not recommended.
$user = User::where('id', 1)->get()[0];
// this is proper way
$user = User::where('id', 1)->get()->first();
如果您確定只有一行符合您的條件,您可以調(diào)用first()而不是get().
$user = User::where('id', 1)->first();
- 2 回答
- 0 關(guān)注
- 222 瀏覽
添加回答
舉報(bào)