Php 查询laravel表时如何获得相同的结果数组

Php 查询laravel表时如何获得相同的结果数组,php,laravel,Php,Laravel,使用laravel时,内置的laravel模型方法返回结果数组列表。但是当查询同一个表时,会得到不同的对象。请检查以下代码-如何获得相同的结果集 $users = User::all(); Illuminate\Support\Collection Object ( [items:protected] => Array ( [0] => stdClass Object ( [id] => 10

使用laravel时,内置的laravel模型方法返回结果数组列表。但是当查询同一个表时,会得到不同的对象。请检查以下代码-如何获得相同的结果集

$users = User::all();

Illuminate\Support\Collection Object
(
    [items:protected] => Array
    (
        [0] => stdClass Object
        (
            [id] => 10
            [email] => amirtha@gmail.com
        )

        [1] => stdClass Object
        (
            [id] => 12
            [email] => renjith@123.com

        )
    )
但在使用sql查询时,如下所示:

$result = DB::table('users as u')
            ->select('u.id','u.email','u.role','u.created_at')
            ->join('roles as r','r.id','=','u.role')
            ->where('u.role', '!=',  1 )
            ->orderBy('u.name','asc')
            ->get();
            print_r($result);
我得到:

Illuminate\Database\Eloquent\Collection Object
(
    [items:protected] => Array
    (
        [0] => App\User Object
        (
            [fillable:protected] => Array
            (
                [0] => name
                [1] => email
                [2] => password
                [3] => lastname
                [4] => mobile
                [5] => role
            )

            [hidden:protected] => Array
            (
                [0] => password
                [1] => remember_token
            )

            [casts:protected] => Array
            (
                 [email_verified_at] => datetime
            )

            [connection:protected] => mysql
            [table:protected] => users
            [primaryKey:protected] => id
            [keyType:protected] => int
            [incrementing] => 1
            [with:protected] => Array
            (
            )

            [withCount:protected] => Array
            (
            )

            [perPage:protected] => 15
            [exists] => 1
            [wasRecentlyCreated] => 
            [attributes:protected] => Array
            (
                [id] => 1
                [name] => amritha
                [email] => amritha@gmail.com
            )

此查询与从用户选择*相同 $users=User::all

而这个查询与前面的查询不同

$result = DB::table('users as u')
->select('u.id','u.email','u.role','u.created_at')
->join('roles as r','r.id','=','u.role')
->where('u.role', '!=',  1 )
->orderBy('u.name','asc')
->get();
print_r($result);

我认为您的问题是,当您想使用表别名时,那么下面该怎么办:

 $result =  User::query()->from('User as u')
            ->select('u.id','u.email','u.role','u.created_at')
            ->join('roles as r','r.id','=','u.role')
            ->where('u.role', '!=',  1 )
            ->orderBy('u.name','asc')
            ->get();

您使用的是什么版本的Laravel?您是否希望结果作为一组雄辩的模式?larvel 5.3版您是否在用户模型中设置了角色关系?我没有在用户模型中设置关系,如何设置关系我可以使用$users=User::all;where用户角色不等于1如何将where与user::allhello!:D我认为你正在寻找的方法是加入的有力方式,你应该首先创建关系,请参阅Laravel文档,然后你可以尝试此用户::选择'id',电子邮件','role',created_at->has'roles'->orderBy'uname',asc'->get;谢谢,有人怀疑使用User::query->from'Users as u'与DB::table'Users as u'有什么区别@Osama Alvi DB对象以原始格式查询数据库,这很容易被SQL注入,而使用elounting可以提高查询数据的安全性:它是可选的,可以帮助您查找函数,如尝试删除查询函数,然后选中函数“from”,它将变为黄色。