Laravel101:如何连接到Sqlite并使用雄辩的模型
#教程 #php #laravel #sqlite

嘿!在构建网站时,一个关键方面是有效处理数据的能力。通常,网站通过使用数据库来完成此操作。在本文中,我们将探讨如何将Laravel连接到SQLITE数据库,还将介绍如何创建可以将您的数据存储在数据库中的模型。听起来不错?让我们开始!


框架通常具有连接到各种数据库的灵活性,而Laravel也不例外。实际上,根据您的需求,您可以轻松地连接到不同的数据库。例如,您可能需要在生产环境中使用MySQL,但是出于开发目的,您可以使用SQLite

Image description

在本教程中,我们将向您展示如何连接到SQLite,这是一个基于文件的轻巧数据库,非常易于使用和设置。

配置数据库驱动程序

要使用sqlite,我们需要安装适当的软件包:

sudo apt install sqlite3
sudo apt install php-sqlite3 -y

然后,打开位于项目主目录中的.env文件。该文件包含重要信息,例如您的电子邮件服务,数据库和任何其他敏感数据的连接设置。实际上,该文件包含在Gitignore中是一件好事,以维护您的信息的机密性。

默认情况下,.env文件定义了与mysql的连接,让我们更改它以使用sqlite驱动程序:

DB_CONNECTION=sqlite

好吧,下一步是在我们的项目中创建一个SQLite文件,以存储在其上的信息。我在项目主要目录的数据库文件夹中进行了此操作,因为默认情况下,Laravel在该地址上搜索SQLite文件:

touch database/database.sqlite

简单的peasy!我们的Laravel项目现在已连接到SQLITE数据库!

迁移

接下来,我想在Laravel中引入一个名为Migration的新概念。这是在数据库中管理桌子的好工具!每个迁移文件允许您创建新表,通过添加或删除列来修改现有的表格,并进行其他任何更改。虽然可能会发生回滚变化,但重要的是要牢记迁移过程主要是一个远期过程。因此,一旦您的数据进入最终产品数据库,您可能会丢失数据,因此回滚的变化并不容易。但是,在开发过程中,您总是可以在需要时回滚。

这是一个提示:我建议您首先设计所需的数据库和表,然后在需要进行更改时创建一个新的迁移文件。这种方法最可取,而不是不断回滚变化。 *因此,如果您需要进行更改,只需创建一个新的迁移文件而不是来回走动。
*

Image description

您可以在上图中看到,迁移路径中已经有很多文件。现在不用担心它们,后来我们可以进行。

要在Laravel中创建一个迁移文件,您可以使用工匠命令行工具:

php artisan make:migration <name_of_migration>

这将在数据库/迁移目录中生成新的迁移文件。创建迁移文件后,您可以使用PHP Artisan Migrate命令运行它。这将应用于您的数据库的任何待处理迁移:

Image description

我对我们在本培训系列中进行的项目做出了一些决定,以使其变得更好。现在,我们创建了一个提醒Web应用程序,用户可以在其中添加自己的任务。

在此培训期间,我们将共同完成该产品,并指导您完成所有必要的步骤。到最后,您将对如何使用Laravel创建功能齐全的笔记本网站有着深入的了解。让我开始!

开始使用雄辩的模型!

好吧,提醒应用需要的第一件事是由用户创建的任务实体。

我们刚刚谈论了迁移,这些迁移负责在数据库中创建和修改表。但是,Laravel拥有另一个称为Eloquent模型的功能强大的功能,可以帮助我们更有效地使用数据。

使用雄辩的模型,您可以在表中创建,更新,删除和查询数据,并定义数据模型之间的复杂关系。在本系列中,我将涵盖雄辩模型的所有有用功能,并向您展示如何利用他们的力量来构建强大的提醒应用程序。

要创建任务实体,我们再次返回工匠命令:

php artisan help make:model

如果将上述命令输入到终端,您会发现可以使用一些非常有用的选项

例如,您可以使用-M选项同时为模型创建迁移文件。或者,您可以使用-c选项同时为模型创建控制器。

由于我们同时需要一个控制器和迁移文件,因此我们应该使用以下命令:

php artisan make:model Task -mc

Image description

您可以从上面的图片中找到迁移,创建控制器和模型!

现在是时候返回任务迁移文件并在数据库中定义任务表。

在此类中,我们将看到两个主要功能:上下。 UP函数用于迁移,并且向下功能用于回滚操作。我们可以使用名为架构的构建器将表格的描述转化为我们使用的适当数据库服务。此描述是使用称为蓝图的类创建的。

现在不用担心这些概念现在似乎有些混乱。您需要知道的所有内容都是一些预定义的功能来定义我们的数据模型的属性

目前,让我们专注于将标题属性添加到任务表以保持简单:

public function up(): void
{
    Schema::create('tasks', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->timestamps();
    });
}

在代码中,您可能已经注意到了另外两个称为idtimestamps的助手功能。

id函数在我们的数据库中创建自动启动索引。同时,时间戳功能创建了两个列:created_atupdated_at

创建模型时,创建的列列在更新模型时获取值时获取值。 Laravel会自动处理此操作,因此您不必担心它。很酷,对吗?

现在,使用php artisan migrate,我们的表将在数据库中创建。

很棒的工作!您刚刚完成了连接到数据库的Laravel最重要的部分之一,创建了一个与其连接的模型。

如果您想查看创建的数据库,并且使用DataGrip,则可以单击打开数据库文件并在必要时安装所需的驱动程序。另外,您可以使用其他应用程序,例如SQLiteBrowser

Image description

值得注意的是,我们只在这里创建了tasks表。默认情况下,其余的表格都包含在每个Laravel项目中。通过安装软件包,您还可以为该软件包安装所需的表。

现在,让我们在表中生成一些用于测试的数据。为此,我们可以使用一个有趣的工具,称为Tinker。 Tinker是执行PHP命令的实时环境。要访问它,只需运行以下命令:

php artisan tinker

让我们在雄辩的模型中查看第一个有用的功能:

Image description

出色的工作! all函数显示表中的所有记录。由于此时我们没有任何数据,因此没有输出。

接下来,让S将记录保存到表中。为此,我们从Task类创建一个对象,设置我们在模型前面定义的标题属性的值,然后调用save函数以将记录保存到表中。

现在,如果我们再次执行上一个命令,我们会看到我们的表不再为空!

Image description

您注意到我先前告诉您的其他属性正在由雄辩处理。

让我们回到我们之前创建的控制器。我们将定义一个类似于上一个教程中创建的朋友功能的函数。这次的唯一区别是数据将从数据库中检索。

class TaskController extends Controller
{
    public function index()
    {
        return view('home', ['tasks' => Task::all()]);
    }
}

如果一切顺利,您的输出应该看起来像这样。

Image description

是的,就是这样!

现在,如果您只想显示每个记录的标题,只需称呼它。为了表明我的意思是您添加一些样式,如您在下面的图片中所看到的,这些样式仅显示每个记录的标题!

Image description

我只使用尾风课,并使用此package中的图标,您可以在项目中与作曲家一起安装它。另外,您可以找出这个系列教程项目here


在本教程中,您学会了如何将数据库连接到项目并在数据库中创建表。您还学会了如何将模型与桌子连接并使用。在下一个教程中,我们将通过表格将记录添加到数据库中。