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