胎嘎侯~今天要來問問大家,你是怎麼理解Eloquent ORM的呢?
ORM(Object Relational Mapping)中文為物件關聯對映,在中國則稱為對象關係映射,筆者一直覺得這個概念挺抽象,但實際操作會清楚許多,先不用擔心。
另外,筆者很好奇Eloquent名稱的來由,中譯是雄辯/口才,難道是說它有強大的能力使Model與DB進行溝通嗎?哈哈,不過先不討論,今天把重點放在對ORM的理解上,來好好理解葫蘆裡賣的是什麼藥,我們才能安心服用~
官方文件對ORM的解釋是:
Laravel附帶的Eloquent ORM,提供了一個漂亮簡單的ActiveRecord實現於資料庫處理。每個資料庫表都有一個對應的
Mode
,與該表相互作用。Mode
使您可以查詢表中的數據,以及將新記錄插入表中。
無需編寫一長串的查詢語法,只要簡單的語法就可以在幾秒鐘內獲得原先複雜的查詢。
使用之前必須先至你的.env
設定環境參數,不過能這麼順利使用mysql來連接的原因,原來Laravel在config/database.php.
中早就為使用者安排好一切,寫好了連接的資訊。我們來看看mysql連接設置有哪些:
Laravel也提供其他預設的連接:sqlite、pgsql、sqlsrv。
找資料的過程中發現撰寫於2016年的一篇論文,題目為Comparison of performance between Raw SQL and Eloquent ORM in Laravel,該論文的第11頁圖2:2清楚的揭示工作流程,對理解ORM會有幫助,這裡我就不引用了。
回到前頭,我們提到實際操作有助於了解Eloquent,那先來定義一個模型。
筆者習慣model跟migration一起搞定,指令如下,輸入後會顯示Model與Migration的新增訊息。
這邊要特別注意務必跟隨Laravel的命名規則走,Model類別名稱一律採用單數,筆者曾經踩了命名坑填了小寫,蠢到家才更證明好好看文件的重要性,警世別學我啊(哭)。
charleen@charleen-VirtualBox:~/Email_Verification$ php artisan make:model TestUser -m
Model created successfully.
Created Migration: 2019_10_05_093341_create_test_users_table
接著我們會發現圖片中有一行use Illuminate\Database\Eloquent\Model;
好像沒看到跟migration的關聯?那是因為在這種情況下,Eloquent將假定TestUser Model將記錄存儲在test_users表中。
今天就先到這裡,明天再來講講他們的關係~
明天見!