📅  最后修改于: 2023-12-03 15:10:27.754000             🧑  作者: Mango
在 Laravel 中,我们通常使用 Eloquent ORM 来操作数据库。Eloquent 提供了非常方便的方式来查询数据库并返回查询结果对象,但是有时候我们希望获取原始的查询数据,以实现更灵活的操作。
在 Laravel 中,获取原始数据有以下几种方式:
使用 Eloquent 的 get 方法可以返回原始的查询数据,例如:
$users = DB::table('users')->get();
上面的代码会返回一个 stdClass 对象数组,每个对象代表一行记录,对象的属性名是字段名。
使用 Eloquent 的 select 方法可以返回指定字段的原始数据,例如:
$users = DB::table('users')->select('name', 'email')->get();
上面的代码只会返回 name 和 email 两个字段的原始数据。
如果需要执行复杂的原生 SQL 语句,可以使用 Laravel 的 DB facade,例如:
$results = DB::select('select * from users where id = ?', [1]);
上面的代码会执行 "select * from users where id = 1" 这个 SQL 语句,并返回结果集。
最后一种方法是直接获取 PDO 对象,使用 PDO 自带的方法执行原始的 SQL 语句,例如:
$pdo = DB::connection()->getPdo();
$statement = $pdo->prepare("select * from users where id = ?");
$statement->execute([1]);
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
上面的代码会返回 "select * from users where id = 1" 这个 SQL 语句执行的结果集。
以上几种方式可以灵活地获取原始数据,但是需要注意的是,获取原始数据可能会导致代码不够优雅,也不够安全,需要谨慎使用。