Laravel 和 Eloquent 有助于加快应用程序和平台的开发,为大多数问题提供充分的解决方案。 通过更快的开发以及组织良好、可重用、可维护和可扩展的代码来满足需求。
开发人员可以在 Eloquent
使用 ActiveMethod 实现有效地处理多个数据库。 它是一种架构模式,其中在模型-视图-控制器 (MVC) 结构中创建的模型对应于数据库中的表。 优点是模型可以执行常见的数据库操作,而无需编写长 SQL 查询。 模板允许您查询表中的数据并将新记录插入表中。 简化了同步在不同系统上运行的多个数据库的过程。 您不需要编写 SQL 查询。 你所要做的就是 defi完成数据库表以及它们之间的关系,Eloquent 将完成剩下的工作。
欣赏 Eloquent ORM 的实用性,并了解生态系统是必须的。 开始步骤:
migration
使用控制台 Artisan
eloquent
seed
数据库的Artisan Console
是 Laravel 中包含的命令行界面的名称。 提供一组有用的命令,供您在开发应用程序时使用。 它由强大的组件驱动 Symfony Console
.
要查看所有可用的 Artisan 命令的列表,您可以使用 list 命令:
php artisan list
所有命令都带有对其参数和选项的简明描述。 这显示在“帮助”屏幕中。 要显示帮助屏幕,只需在命令名称前加上“help”,如下所示:
php artisan help migrate
Migration
迁移是通过编写 PHP 代替数据库管理过程 SQL
. 提供一种向数据库添加版本控制的方法。
要创建迁移,只需运行以下命令:
php artisan make:migration create_student_records
这将创建迁移文件。 在您的文本编辑器中,打开您刚刚在文件夹中创建的文件 database\migrations
:
<?php
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreateStudentRecordsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('student__records', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('student__records');
}
}
代码是一个同名的类'create student records
',并且有两种方法:向上和向下。 up 方法应该对数据库进行更改; 因此,无论何时迁移数据库,都会执行 up 方法中的任何代码。 另一方面,down 方法应该回滚那些数据库更改; 所以每当你运行 rollback
的 migration
, down 方法应该撤消 up 方法所做的事情。 方法内部 up
有用于创建和操作表的架构构建器。 如果您取消某些迁移会怎样? 您所要做的就是执行以下命令:
php artisan migrate:rollback
他会收集最后一个 migration
已实施。 此外,您可以通过运行以下命令完全恢复数据库:
php artisan migrate:reset
这将取消您的所有迁移。
Eloquent
数据库迁移完成后,接下来的流程就是 seeding
. Eloquent
自从开始发挥作用 seeding
正在向我们的数据库中插入记录。 因此,您需要在填充数据库之前创建模板。 每个数据库表都有一个对应的模型,用于与该表进行交互。 模板允许您查询表中的数据,以及将新记录插入表中。 实例化模型的最简单方法是使用以下命令:
php artisan make:model Student
模板示例如下所示 Student
,可用于从我们学生的数据库表中检索和存储信息:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Student extends Model
{
//
}
当你生成一个模型,同时你想生成一个数据库迁移,你可以使用选项 –migration
o -m
:
php artisan make:model Student --migration
php artisan make:model Student -m
整体播种机是一组特殊的类,允许我们用完全相同的数据一遍又一遍地填充我们的数据库。 我们执行以下命令:
php artisan make:seeder StudentsRecordSeeder
在文本编辑器中,在 seeds 文件夹下,打开新创建的文件,文件名为: StudentsRecordSeeder.php
. 如您所见,这只是一个非常简单的类,只有一个名为 run
()。
<?php
use IlluminateDatabaseSeeder;
class StudentsRecordSeeder extends Seeder
{
/**
* Run the database seeds
* @return void
*/
public function run()
{
//
}
}
该代码只是控制台命令类的包装器,专门用于帮助完成以下任务 seeding
. 编辑代码,然后保存。
public function run()
{
echo 'Seeding!';
}
去终端:
php artisan db:seed --class=StudentsRecordSeeder
现在您可以用一些条目填充表并运行:
php artisan db:seed --class=class=StudentsRecordSeeder
在这里你可以不断地删除、添加、修改数据库中的条目,然后用一个简单的命令恢复它们。
使用 Laravel Eloquent 对象关系映射器 (ORM) 的 CRUD 操作使 Laravel 开发人员更容易使用多个数据库。 它执行创建、读取、更新和删除 (CRUD) 操作,并将对象模型映射到数据库表。 处理 CRUD 操作所需的所有数据库交互。
您可以使用 ::create 方法将新记录插入数据库。
student_record::create(array(
'first_name' => 'John',
'last_name' => 'Doe',
'student_rank' => 1
));
除了上面显示的简单创建方法,您还可以创建一个新对象并赋予它不同的属性。 然后,您可以调用 save() 函数并运行代码。 像这样的方法 firstOrCreate
()o firstOrNew
() 是创建记录的其他选项。 这些将使您能够找到具有某些属性的学生; 如果找不到该学生,您将在数据库中创建它或实例化一个新实例。
使用 Eloquent ORM,您可以在数据库中查找记录。 查询构造简单,流程流畅。 创建语句:where
,您将使用这些方法 get
() 和 first
(). 方法 first
() 只会返回一条记录,而方法 get
() 将返回一个可循环的记录数组。 还有,方法 find
() 可以与主键数组一起使用,这将返回匹配记录的集合。 这里有些例子:
$student = Students::all();
此代码获取所有学生。 以下代码通过 ID 查找特定学生:
$student = Students::find(1);
此外,如下所示,代码描述了根据特定属性搜索学生。
$JohnDoe = Students::where('name', '=', 'John Doe')->first();
对于 get() 方法,此代码显示了如何查找级别高于 5 的学生。
$rankStudents = Student::where('student_rank', '>', 5)->get();
使用 Eloquent 更新记录同样简单。 要更新记录,只需找到要更新的记录,编辑属性并保存即可。 例如,要将 John Doe 的学生的年级更改为 5,首先找到该学生,然后执行保存方法。
$JohnDoe = Bear::where('name', '=', 'John Doe')->first();
$JohnDoe->danger_level = 5;
$JohnDoe->save();
save 方法也可用于更新数据库中已存在的模型。
Eloquent 以其简单的记录更新过程而自豪,但它在删除方面也有同样的故事。 有两种选择:拉出记录并执行delete方法,或者干脆使用destroy方法。 要查找和删除记录,只需运行以下命令:
$student = Students::find(1);
$student->delete();
要删除一条记录和多条记录,运行命令:
Students::destroy(1);
Students::destroy(1, 2, 3);
请注意,与可以接受任何数据库列的 delete 方法不同,destroy 的参数只是主键。
查找并删除所有 10 级以上的学生。
Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri