运行原始 SQL 查找
$result = DB::select("SELECT * FROM user_info WHERE id = ?",[1000000]);
使用命名绑定
除了使用 ? 来表示你的参数绑定外,你也可以使用命名绑定运行查找
$result = DB::select("SELECT * FROM user_info WHERE id = :id",['id'=>1000000]);
手动操作事务
如果你想手动处理事务并对还原或提交操作进行完全控制,则可以在 DB facade 使用 beginTransaction 方法:
DB::beginTransaction();
你也可以通过 rollBack 方法来还原事务:
DB::rollBack();
最后,可以通过 commit 方法来提交这个事务:
DB::commit();
获取结果
从数据表中获取所有的数据列
$result = UserInfo::get();
从数据表中获取单个列或行
若你只需从数据表中取出单行数据,则可以使用 first 方法。这个方法会返回单个 StdClass 对象
$result = UserInfo::select()->where('id','1000000')->first();
若你不想取出完整的一行,则可以使用 value 方法来从单条记录中取出单个值。这个方法会直接返回字段的值:
$result = UserInfo::select()->where('id','1000000')->first()->value('name');
聚合
查询构造器也提供了各种聚合方法,例如 count、max、min、avg、以及 sum。你可以在创建查找后调用其中的任意一个方法:
$result = UserInfo::count();
Selects
指定一个 Select 子句
当然,你并不会总是想从数据表中选出所有的字段。这时可以使用 select 方法为查找指定一个自定义的 select 子句:
$result = UserInfo::select("id","name as username")->get();
Joins
Inner Join 语法
查询构造器也可用来编写 join 语法。要操作基本的 SQL「inner join」,则可以在查询构造器实例上使用 join 方法。传入 join 方法的第一个参数是你所需要连接的数据表名称,其它参数则指定用来连接的字段约束。如你所见,你可在单个查找中连接多个数据表:
$users = DB::table('users') ->join('contacts', 'users.id', '=', 'contacts.user_id') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.*', 'contacts.phone', 'orders.price') ->get();
Left Join 语法
如果你想以操作「left join」来代替「inner join」,请使用 leftJoin 方法。leftJoin 方法和 join 方法有着相同的签名:
$users = DB::table('users') ->leftJoin('posts', 'users.id', '=', 'posts.user_id') ->get();