2 回答
TA贡献1776条经验 获得超12个赞
这是因为您使用\DB::table('users')的是独立于您的模型和代码结构的。这就像直接在数据库上运行查询一样,laravel 无法知道结果是User包含所有字段的完整结果。
利用
$userGet = \App\User::query()
->where('id','=', 1)
->get()[0]
echo get_class($userGet) // -> App\User
TA贡献1934条经验 获得超2个赞
这不是因为使用get()方法。这是因为使用了DB门面。
如果您使用模型外观进行查询,则每个对象都将转换为特定的模型对象。
该get()函数将返回一个Eloquent Collection而不是一个对象。
// this is a collection of users
$users = User::where('id', 1)->get();
因此,如果您想要该集合中的一个对象,您可以first()在它之后调用。
(而不是调用数组索引 [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();
如果您确定只有一行符合您的条件,您可以调用first()而不是get().
$user = User::where('id', 1)->first();
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报