Laravel Eloquent2025年3月17日 | 阅读 7 分钟 在本主题中,我们将学习允许与数据库交互的 eloquent 模型。 每个数据库表都有其对应的模型,该模型提供与数据库的交互。 该模型允许您查询表中的数据。 模型在 app 目录中创建。 您也可以将模型放置在任何位置,这些位置可以根据 composer.json 文件自动加载。 我们可以使用以下命令创建模型 php artisan make:model Post 我们还可以使用数据库迁移生成模型 php artisan make:model Post -m 或 php artisan make:model Post -migration 创建模型的步骤
![]() 上面的窗口显示名称为 'Post' 的模型已成功创建。
![]() 模型的结构上面创建的模型类的结构如下所示 上面的代码显示了 Post 类扩展了 Illuminate\Database\Eloquent\Model。 表名在 laravel eloquent 中,我们不需要指定要用于 Post 模型的表名。 除非我们明确指定表名,否则类的复数名称将被视为表名。 例如,在上面的代码中,类的名称是 Post,它作用于表 posts。 您还可以使用模型类的 $table 属性指定自定义表,如下面的代码所示 在上面的代码中,$table 属性指定 Post 类正在使用 posts 表。 主键Eloquent 模型认为每个表都有一个名为“id”的主键。 我们可以通过为 $primarykey 属性提供不同的名称来覆盖此约定。 默认情况下,在 eloquent 中,主键是一个自动递增的整数值。 如果我们要为主键提供非递增的值,那么我们必须将 $incrementing 属性设置为 'false'。 public $incrementing = false; 如果我们要为主键提供非整数值,那么我们必须为 $keyType 属性提供不同的值。 protected $keyType = 'string'; 在上面,我们将字符串类型分配给主键。 读取数据现在,我们将了解如何从数据库中检索数据。 让我们通过一个例子来理解。
Post.php
web.php 在上面的代码中,我们使用 all() 方法从数据库中检索所有记录,然后我们应用 foreach 循环来检索数据库中所有可用行的 body 名称,如下所示。 在下面的屏幕截图中,我们可以看到 posts 表中提供了两条记录。 ![]() 输出 当我们运行 url,localhost/firstproject/public/read 时,输出将是 ![]() 如果我们想从数据库中检索特定记录,那么我们使用 find() 方法。 输出 运行 url,localhost/firstproject/public/find 以查看上述代码的输出。 ![]() 读取具有约束的数据
输出 ![]()
输出 ![]() 插入数据现在,我们将看到如何在数据库中插入数据。 让我们看一下下面给出的示例 输出 在 Web 浏览器中运行 url,localhost/firstproject/public/insert。 执行 url 后,打开 phpmyadmin。 ![]() 上面的输出表明数据已成功插入。 使用 save() 方法更新数据我们还可以使用 save() 方法更新记录。 让我们通过一个例子来理解。 输出 ![]() 上面的屏幕显示了在执行上述代码之前的数据库表。 当我们执行上面的代码时,数据会更新,如下面的屏幕所示。 ![]() 批量赋值要提供批量赋值,我们需要使用 create() 方法,并在模型类中提供 $fillable 属性。 让我们通过一个例子来理解。
输出 运行 url,localhost/firstproject/public/create 以运行上面的代码。 ![]() 现在,看看数据库。 ![]() 上面突出显示的区域显示已成功创建新记录。 使用 Eloquent 更新数据现在,我们将看到如何使用 eloquent 更新数据。 让我们通过一个例子来理解。
在上面的代码中,我们使用了模型类的 update() 方法。 我们正在更新 id 等于 1 的记录。 输出 ![]() ![]() 删除数据现在,我们将看到如何使用 Eloquent 删除数据。 我们直接实现 eloquent 模型类中可用的 delete() 方法。 删除数据有不同的方法。
输出 ![]() ![]()
输出 ![]() ![]() 如果我们想销毁多个行, 上面的代码正在销毁 id 为 3 和 4 的记录。 输出 ![]() ![]()
输出 ![]() ![]() 软删除/放入回收站还有另一种删除记录的方法是软删除。 当模型被软删除时,这意味着记录实际上并未从数据库中删除。 在软删除中,记录不会永久删除; 它们存储在回收站空间中。 让我们通过一个例子来理解如何进行软删除。
![]()
laravel 包含一个名为 softDeletes() 的辅助方法,我们在上面的代码中使用了它。 softDeletes() 方法用于创建列。
![]()
在上面的代码中,我们正在软删除 id 为 '1' 的记录。 输出 ![]() ![]() 在上面的屏幕中,deleted_at 列显示了此记录被软删除的时间。 如果此列包含空值,则表示此记录未被软删除。 检索已删除/已放入回收站的数据要检索已删除的数据,我们使用 withTrashed() 方法。 让我们通过一个例子来理解这一点。 在上面,我们正在检索已放入回收站或软删除的记录。 输出 ![]() 恢复已删除/已放入回收站的数据在上一主题中,我们了解了如何从软删除模型中检索数据。 现在,我们将看到如何将数据从回收站空间恢复到原始位置。 让我们通过一个例子来理解这一点。 在上面的代码中,我们正在使用 restore() 函数恢复已放入回收站的数据。 输出 ![]() ![]() 上面的屏幕显示 deleted_at 列的值为 NULL,这意味着该记录已恢复到数据库中。 永久删除记录有时我们需要永久删除数据。 要永久删除软删除模型,我们使用 forceDelete() 方法。 让我们通过一个例子来理解这一点。 在上面的代码中,我们正在删除已放入回收站的数据。 在执行上述代码之前,放入回收站的记录的 id 等于 1,如下面的屏幕截图所示。 ![]() 当我们运行上面的代码时,放入回收站的记录将被删除,并且该表将如下所示 ![]() 下一主题Laravel 关系 |
我们请求您订阅我们的新闻通讯以获取最新更新。