iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 19
1

本系列文的環境狀態,可點擊此連結後花園環境參考

那麼好用一定不是我所認爲的那個 Model ,那是...
一個 Model 各自表述,就自己用的順,別人看得懂就好了?

這次就收入在下比較認同的看法,還有使用的方式。

有人說 Model 是 layer 、包羅萬象、涵蓋你全部的 business logic 。

在 Laravel 中,看不到所謂的 Models 資料夾,但如果有了,可能會讓像在下這樣懞懞懂懂的初學者,誤會它就只有從 database 拿取資料的功用,但那只是他的其中一個元素,並非他的一切。

Laravel 之父 Taylor Otwell 說:

「 我個人在開發 Laravel 4 的早期階段就想把「 models 」資料夾整個移除了。因為我不覺得它有用,也不覺得它能協助你設計軟體架構。而且它還會引誘人們掉入「 model == database 」的陷阱裡。所以,我希望你們不要覺得我對架構設計很無知。我花了點時間才想清楚我到底想在PHP世界打造什麼。 」

如果真得想建立跟 Models ( business logic ) 相關的資料夾,建議是採公司名稱或專案名稱命名,並在裡面分門別類,釐清各自間的功能跟作用。

Laravel 官版對 Eloquent 介紹:

The Eloquent ORM included with Laravel provides a beautiful, simple ActiveRecord implementation for working with your database. Each database table has a corresponding "Model" which is used to interact with that table. Models allow you to query for data in your tables, as well as insert new records into the table.

這邊在下將會對官版介紹中提及的 ORM 及 ActiveRecord 做些探究,使自身對於 Models 的運用能有更清楚的認識。

關於 Eloquent

Eloquent 是 Laravel 的 ORM 工具名稱,遵循在 rails 的 ActiveRecord ORM 風格的資料庫互動,省去大量與資料庫互動的時間,直接取用關聯式資料的內容。

關於 ORM( Object Relational Mapping 物件關聯對映 )

ORM核心原則:簡單性、傳達性、精確性

物件關聯映射,通常縮寫為 ORM。是一種技巧,將應用程式中複雜的物件,對應到關聯式資料庫管理系統中的資料表。使用 ORM,可以輕鬆儲存物件的特性與關係,取出來的時候也不需要撰寫 SQL 語句,總體上減少了與資料庫存取有關的程式碼。

簡單來說,它可以幫助使用者更簡便、安全的去從資料庫讀取資料,
因為 ORM 的一個特性為: 透過程式語言( Ruby 、 Java 、 PHP ),去操作資料庫語言( SQL )。而這也是實作了物件導向的概念,產生的一種工具模式

關於 ActiveRecord (活動記錄)

由 Rails 最早提出,遵循標準的 ORM 模型。

ActiveRecord 關係到 MVC 的 M(Model),表現商業邏輯與資料的層級。ActiveRecord 負責新增與操作需要持久存在資料庫裡的資料。

Active Record 賦予我們許多功能,最重要幾個是:
表示 Model 與資料。
表示 Model 之間的關係。
表示相關 Model 之間的繼承關係。
持久化資料存入資料庫的驗證。
以物件導向的風格操作資料庫。

這次爲了驗明正身,不小心越查越多資料,但個人會比較傾向於就將 Model 當成用來分類business logic 的地方。

對於相關資訊想再細究,可以參考連結:
❁ Laravel官方 - Eloquent: Getting Started
❁ 框架不應該有「MODELS」資料夾
❁ Laravel 學習筆記(16) - 資料庫之 Eloquent ORM
❁ 佛祖球球-Eloquent ORM
❁ Laravel Query Builder & Eloquent ORM 介绍
❁ [Day20] 資料庫設計概念 - ORM
❁ D11 Model, Eloquent, ORM(1)
❁ PHP:laravel項目架構 Laravel的中大型項目構架學習原來如此簡單
❁ Laravel的中大型項目構架
❁ Laravel - Artisan 必學的 Model 模型設計
❁ Rails - Active Record 基礎
❁ 談談領域建模 Domain Model
❁ 胖胖 Model 減重的五個方法


上一篇
✾後花園D18✾-命名陷阱: Migration 及 Eloquent Model
下一篇
✾後花園D20✾- 不是僞娘,是僞 Model ( Eloquent Model 實作篇 )
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49

尚未有邦友留言

立即登入留言