在 Laravel 中,Eloquent ORM 提供了强大的查询构建器,允许你使用流畅的接口来构建数据库查询。where 方法用于添加基本的条件,而 orWhere 方法用于添加逻辑或的条件。
where 和 orWhere 查询假设你有一个 users 表,包含 id、name、age 和 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";
}
Capsule 类来初始化 Eloquent ORM 并配置数据库连接。你需要将 your_database、your_username 和 your_password 替换为你自己的数据库信息。User 模型,它对应数据库中的 users 表。where('age', '>', 18):添加一个条件,筛选出年龄大于 18 的用户。orWhere('name', 'John'):添加一个逻辑或条件,筛选出名字是 "John" 的用户。get():执行查询并返回结果集。foreach 循环遍历查询结果,并输出每个用户的信息。你还可以使用闭包来创建嵌套的 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 条件进行逻辑与操作。