数据库:查询构造器
简介
数据库查询构造器提供了方便、流畅的接口,以用来创建及运行数据库查找。可用来执行应用程序中的大部分数据库操作,且能在所有被支持的数据库系统中使用。
注意
Laravel 的查询构造器使用 PDO 参数绑定,以保护你的应用程序不受数据库注入攻击。在传入字符串作为绑定前不需要先清理它们。
获取结果
从数据表中获取所有的数据列
若要开始进行查找 ,可在 DB
facade 上使用 table
方法。table
方法会针对指定的数据表返回一个查询构造器实例,允许你在查询时链式调用更多约束,并得到最终结果。在这个例子中,我们将会从一个数据表中来获取
所有的记录:
<?php
namespace App\Http\Controllers;
use DB;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* 显示应用程序的所有用户列表。
*
* @return Response
*/
public function index()
{
$users = DB::table('users')->get();
return view('user.index', ['users' => $users]);
}
}
就像 原始查找 一样,get
方法会返回一个数组
结果,其中每一个结果都是 PHP StdClass
对象的实例。你可以将列作为对象的属性来访问每个列的值:
foreach ($users as $user) {
echo $user->name;
}
从数据表中获取单个列或行
若你只需从数据表中取出单行数据,则可以使用 first
方法。这个方法会返回单个 StdClass
对象:
$user = DB::table('users')->where('name', 'John')->first();
echo $user->name;
若你不想取出完整的一行,则可以使用 value
方法来从单条记录中取出单个值。这个方法会直接返回字段的值:
$email = DB::table('users')->where('name', 'John')->value('email');
从数据表中将结果切块
若你需要操作数千条数据库记录,则可考虑使用 chunk
方法。这个方法一次只取出一小「块」结果,并会将每个区块传给一个闭包