laravel 5入门系列——8

本文介绍了Laravel框架中数据库操作的基础知识,包括条件查询、联合查询、更新与删除记录的方法,以及分页功能的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读laravel手册——数据库笔记


Unions

联合查询

$first = DB::table('users')
            ->whereNull('first_name');

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

Where Clauses

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

举例:

1. 验证「votes」字段的值等于 100 的查询
$users = DB::table('users')->where('votes', '=', 100)->get();
2. 如果你只是想简单的校验某个字段等于指定的值,你可以直接将这个值作为第二个参数传递给 where 方法
$users = DB::table('users')->where('votes', 100)->get();
3. 你也可以传递条件数组给 where 函数:
$users = DB::table('users')->where([ ['status', '=', '1'], ['subscribed', '<>', '1'], ])->get();
4. 你可以一起链式调用 where,也可以在查询添加中 or 语句。orWhere 方法接受与 where 方法相同的参数
$users = DB::table('users')
                    ->where('votes', '>', 100)
                    ->orWhere('name', 'John')
                    ->get();
5.whereIn 方法验证字段的值在指定的数组内
$users = DB::table('users')
                    ->whereIn('id', [1, 2, 3])
                    ->get();

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

$users = DB::table('users')
                    ->whereNotIn('id', [1, 2, 3])
                    ->get();
6. whereNull/whrerNotNull 方法验证字段的值为/不为 NULL:
$users = DB::table('users')
                    ->whereNull('updated_at')
                    ->get();
7. whereColumn

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

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

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

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

When

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

$role = $request->input('role');

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

Update

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

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

Delete

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

DB::table('users')->delete();

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

分页——pagonate

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

<?php

namespace 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]);
    }
}
显示分页结果

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

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>
{{ $users->links() }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值