首页 > PHP > laravel orm where or 查询代码示例

laravel orm where or 查询代码示例

2025-03-21 14:40:15

在 Laravel 中,Eloquent ORM 提供了强大的查询构建器,允许你使用流畅的接口来构建数据库查询。where 方法用于添加基本的条件,而 orWhere 方法用于添加逻辑或的条件。

1. 简单的 where 和 orWhere 查询

假设你有一个 users 表,包含 idnameage 和 email 字段。你可以使用 where 和 orWhere 来组合查询条件。

<?php

use Illuminate\Database\Capsule\Manager as Capsule;

// 初始化 Eloquent
$capsule = new Capsule;

$capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'your_database',
    'username'  => 'your_username',
    'password'  => 'your_password',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();

// 示例模型
class User extends \Illuminate\Database\Eloquent\Model
{
    protected $table = 'users';
}

// 查询年龄大于 18 或者名字是 "John" 的用户
$users = User::where('age', '>', 18)
    ->orWhere('name', 'John')
    ->get();

foreach ($users as $user) {
    echo "ID: ". $user->id. ", Name: ". $user->name. ", Age: ". $user->age. "\n";
}    

2. 代码解释

  • 数据库连接初始化:使用 Capsule 类来初始化 Eloquent ORM 并配置数据库连接。你需要将 your_databaseyour_username 和 your_password 替换为你自己的数据库信息。
  • 模型定义:定义了一个 User 模型,它对应数据库中的 users 表。
  • 查询构建
    • where('age', '>', 18):添加一个条件,筛选出年龄大于 18 的用户。
    • orWhere('name', 'John'):添加一个逻辑或条件,筛选出名字是 "John" 的用户。
    • get():执行查询并返回结果集。
  • 结果处理:使用 foreach 循环遍历查询结果,并输出每个用户的信息。

3. 嵌套条件查询

你还可以使用闭包来创建嵌套的 where 和 orWhere 条件。例如,查询年龄大于 18 且(名字是 "John" 或者邮箱包含 "example.com")的用户:

$users = User::where('age', '>', 18)
    ->where(function ($query) {
        $query->where('name', 'John')
            ->orWhere('email', 'like', '%example.com%');
    })
    ->get();

在这个示例中,使用闭包将 name 和 email 的条件组合在一起,并使用 where 方法将其与 age 条件进行逻辑与操作。

使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top