📅  最后修改于: 2023-12-03 15:32:33.597000             🧑  作者: Mango
在 Laravel 中,使用 Eloquent ORM 操作数据库是一种非常方便、快捷的方式。而获取单个记录是 Eloquent 最常见的操作之一。在本文中,我们将介绍如何使用 Eloquent 获取单个记录。
在开始之前,要确保你已经安装好了 Laravel。接下来需要创建一个模型(Model)和一个对应的数据库表来演示获取单个记录的操作。本例中我们将创建一个 Book
模型和一个 books
表。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Book extends Model
{
protected $table = 'books';
protected $primaryKey = 'id';
public $timestamps = true;
}
Laravel Eloquent 为我们提供了多种不同的方式来获取单个记录。这些方法包括 find()
、findOrFail()
、first()
、firstOrFail()
等。
如果我们已知要获取的记录的 id,可以使用 find()
方法来获取单个记录。
$book = Book::find(1);
上述代码将获取 id
为 1
的 books
表记录并将其存储在 $book
变量中。如果找不到该记录,返回 null
。
如果使用 find()
方法无法找到相应的记录,我们可以使用 findOrFail()
方法来抛出一个异常。这可以避免我们在代码中对返回值进行有效性检查。
$book = Book::findOrFail(1);
如果找不到具有指定 id
的记录,将抛出以下异常:Illuminate\Database\Eloquent\ModelNotFoundException
如果要从数据库表中查询单个记录,但不知道该记录的 id
,可以使用 first()
方法。
$book = Book::where('title', 'Harry Potter')
->orderBy('release_date', 'desc')
->first();
上述代码将按照 release_date
的降序顺序,查询标题为 Harry Potter
的书籍记录中的第一条。如果找不到该记录,返回 null
。
如果我们想要使用 first()
方法但是需要抛出一个异常,可以使用 firstOrFail()
方法。
$book = Book::where('title', 'Harry Potter')
->orWhere('title', 'Lord of the Rings')
->orderBy('release_date', 'desc')
->firstOrFail();
上述代码将按照 release_date
的降序顺序,查询标题为 Harry Potter
或 Lord of the Rings
的书籍记录中的第一条。如果找不到该记录,将抛出以下异常:Illuminate\Database\Eloquent\ModelNotFoundException
在 Laravel 中,使用 Eloquent 获取单个记录非常方便。通过使用 find()
或 findOrFail()
,我们可以按 id
获取记录。而使用 first()
或 firstOrFail()
方法则可以按条件查询单个记录。以上方法有助于我们快速、方便地获取单个记录。