laravel 5.5入门系列——8

读laravel手册——数据库笔记

    • Unions

    • Where Clauses

    • When

    • Update

    • Delete

    • 分页pagonate

    • 验证votes字段的值等于 100 的查询

    • 如果你只是想简单的校验某个字段等于指定的值你可以直接将这个值作为第二个参数传递给 where 方法

    • 你也可以传递条件数组给 where 函数

    • 你可以一起链式调用 where也可以在查询添加中 or 语句orWhere 方法接受与 where 方法相同的参数

    • whereIn 方法验证字段的值在指定的数组内

    • whereNullwhrerNotNull 方法验证字段的值为不为 NULL

    • whereColumn

    • 显示分页结果

    • 读laravel手册数据库笔记


Unions

联合查询

$first = DB::table('users')
            ->whereNull('first_name');
$users = DB::table('users')
            ->whereNull('last_name')
            ->union($first)
            ->get();1234567

Where Clauses

基本的 where 方法需要三个参数。第一个参数是字段的名称,第二个参数是运算符,它可以是数据库所支持的任何运算符。最后,第三个参数是要对字段进行评估的值。

举例:

1. 验证「votes」字段的值等于 100 的查询

$users = DB::table('users')->where('votes', '=', 100)->get();1

2. 如果你只是想简单的校验某个字段等于指定的值,你可以直接将这个值作为第二个参数传递给 where 方法

$users = DB::table('users')->where('votes', 100)->get();1

3. 你也可以传递条件数组给 where 函数:

$users = DB::table('users')->where([
    ['status', '=', '1'],
    ['subscribed', '<>', '1'],
])->get();1234

4. 你可以一起链式调用 where,也可以在查询添加中 or 语句。orWhere 方法接受与 where 方法相同的参数

$users = DB::table('users')
                    ->where('votes', '>', 100)
                    ->orWhere('name', 'John')
                    ->get();1234

5.whereIn 方法验证字段的值在指定的数组内

$users = DB::table('users')
                    ->whereIn('id', [1, 2, 3])
                    ->get();123

whereNotIn 方法验证字段的值不在指定的数组内:

$users = DB::table('users')
                    ->whereNotIn('id', [1, 2, 3])
                    ->get();123

6. whereNull/whrerNotNull 方法验证字段的值为/不为 NULL:

$users = DB::table('users')
                    ->whereNull('updated_at')
                    ->get();123

7. whereColumn

字段之间的验证,比如:whereColumn 方法用于验证两个字段是否相等

$users = DB::table('users')
                ->whereColumn('first_name', 'last_name')
                ->get();123

whereColumn 方法也可以传递一个包含多个条件的数组。这些条件将使用 and 运算符进行连接

$users = DB::table('users')
                ->whereColumn([
                    ['first_name', '=', 'last_name'],
                    ['updated_at', '>', 'created_at']
                ])->get();12345

When

有时你可能想要子句只适用于某个情况为真时才执行查询。例如,如果给定的输入值出现在传入请求中时,你可能想要判断它能达成某个 where 语句,你可以使用 when 方法来完成此操作:

$role = $request->input('role');$users = DB::table('users')
                ->when($role, function ($query) use ($role) {
                    return $query->where('role_id', $role);
                })
                ->get();1234567

Update

你也可以使用 update 来更新已存在的记录

DB::table('users')
            ->where('id', 1)
            ->update(['votes' => 1]);123

Delete

查询构造器也可使用 delete 方法从数据表中删除记录。在调用 delete 方法前,还可以通过添加 where 语句来约束 delete 语句:

DB::table('users')->delete();DB::table('users')->where('votes', '>', 100)->delete();123

分页——pagonate

有几种方法可以对数据进行分页。最简单的是在 查询语句构造器 或 Eloquent 查询 中使用 paginate 方法。

<?phpnamespace App\Http\Controllers;use Illuminate\Support\Facades\DB;use App\Http\Controllers\Controller;class UserController extends Controller{
    /**
     * 展示应用中的所有用户
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::table('users')->paginate(15);        return view('user.index', ['users' => $users]);
    }
}123456789101112131415161718192021

显示分页结果

你可以使用 Blade 模板显示结果集并渲染页面链接:

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>{{ $users->links() }}