Laravel Tinker

17 Mar 2025 | 4 分钟阅读

Laravel Tinker 允许您在不创建路由的情况下与数据库交互。 Laravel tinker 与 php artisan 一起使用来创建对象或修改数据。 php artisan 是 Laravel 附带的命令行界面。 Tinker 是一个与 php artisan 一起使用的命令工具。 tinker 与数据库配合使用,这意味着它允许您创建对象、插入数据等。

  • 要进入 Tinker 环境,请运行以下命令

php artisan tinker

Laravel Tinker

上图显示了 tinker 环境已创建。

创建数据

  • 我们可以使用命令行工具在数据库表中创建记录。 我们在命令行工具中使用以下语句,该语句将数据直接插入数据库表
    $post=App\Post::create(['title'=>'Akshay','body'=>'akshay is a software developer']);
Laravel Tinker

输出

当我们执行上面的语句时,数据被插入到 posts 表中。 我们可以在 phpMyAdmin 中查看在下面的屏幕截图中插入的数据

Laravel Tinker

我们也可以通过创建对象来用另一种方式插入数据。

  • 首先,我们创建对象。
Laravel Tinker

在上图中,高亮显示的行正在创建对象,并且对象的名称是 $post。 $post 是 App\Post 类的对象。

我们还可以通过指定命令行工具中的对象名称来查看 $post 对象是否已成功创建。

Laravel Tinker

上图高亮显示区域显示 $post 对象已成功创建,因为 $post 显示了类的名称 App\Post

  • 创建对象后,我们将借助对象插入数据。
Laravel Tinker

在上图中,我们分别使用语句 $post->title 和 $post->body 将值分配给 posts 表中列的 title 和 body。 但是,数据仍未插入表中。 为了将数据插入表中,我们需要使用以下语句

$post->save(); // 它将记录保存在数据库表中。

当我们在命令行工具中键入 $post 时,

Laravel Tinker

上图高亮显示区域显示记录已保存在 posts 表中

让我们看一下 phpMyAdmin 中的 posts

Laravel Tinker

查找记录

我们可以通过三种方式从数据库中检索记录

  • 第一种方法是使用 find() 方法。
Laravel Tinker
  • 第二种方法是使用约束,即 where 子句。
Laravel Tinker

在上图中,我们正在检索 id 等于 1 的记录。在这种情况下,我们使用 first() 方法,因为 first() 方法用于检索单个记录。

Laravel Tinker

在上图中,我们正在检索 id 大于 1 的记录。在这种情况下,提取了多条记录,因此我们使用 get() 方法。 由于在检索记录数组时使用 get() 方法。

  • 第三种方法是使用 whereId()
Laravel Tinker

更新数据

在本节中,我们将学习如何更新数据库中的数据。

让我们通过一个例子来理解。

  • 首先,我们找出要更新的对象。
Laravel Tinker

在上图中,我们检索了第二条记录并将其存储在 $post 对象中。

  • 现在我们更新两列的值,title 和 body。
Laravel Tinker
  • 为了将记录保存在数据库中,我们使用 save() 方法。
Laravel Tinker

在上图中,save() 方法返回 true,这意味着记录已成功更新到数据库中。

Laravel Tinker

删除数据

现在,我们将了解如何从数据库表中删除数据。

让我们通过一个例子来理解。

  • 正如我们所知,$post 是一个包含第二条记录的对象,首先,我们将 delete() 应用于 $post 对象。
Laravel Tinker

上图显示 delete() 方法返回 true 值,这意味着该记录已被删除。

  • 现在,我们将查看数据库,查看 id 等于 2 的记录是否真的被删除。
Laravel Tinker

从上图可以看出,'id' 为 2 的记录仍然存在于表中,但 deleted_at 列中的日期不为空,这意味着该记录已被软删除。

  • 要永久删除记录,
Laravel Tinker

在上图中,我们使用 $post->onlyTrashed(),这意味着 $post 对象仅包含已删除的记录。

要永久删除已删除的记录,我们在 $post 对象上使用 forceDelete() 方法。

Laravel Tinker

上图显示 forceDelete() 方法返回 true 值,这意味着记录已从表中成功删除。

让我们看一下数据库

Laravel Tinker

在上图中,我们观察到 'id' 为 2 的记录已从 posts 表中删除。

与 tinker 的关系

到目前为止,我们使用路由找到了关系。 现在,我们将通过 tinker 了解关系。 在 laravel 关系主题中,我们借助路由通过一个对一个的关系来查找属于每个用户的帖子。 现在,我们在 tinker 环境中查找每个用户的帖子。

让我们通过一个例子来理解。

  • 首先,我们查看两个表 users 和 posts 表中可用的数据。

users 表

Laravel Tinker

posts 表

Laravel Tinker
  • 在此步骤中,我们将找到用户。
Laravel Tinker

在上图中,我们观察到 $user 对象包含第二个用户,即 'users' 表中 'id' 等于 2 的记录。

  • 现在,我们通过 $user 对象实现 User 模型中可用的 posts() 方法。 语句 '$user->posts' 调用 User 类的 posts 方法。
Laravel Tinker

上图显示语句 '$user->posts' 从 'posts' 表中检索用户的帖子。


下一主题Laravel Crud