Laravel模型基本操作

运行原始 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();