來到了第十天,我們終於開始談到 MVC 的部分了!
今天我們來談談怎麼設計出難以維護的 model。
Larvel 的 ORM model 使用起來非常簡潔,並且無論是閱讀或者是修改起來都相對簡單。
所以,要讓之後的人難以維護的話,最單純的方法就是:不要用 model。
要存取資料庫的話,我們可以用 PHP 原生的 PDO
,如果要更難維護一點,可以用 mysqli_
系列的函式。
如果一定要用 Laravel 內的功能,可以善用 Laravel 的 Query Builder,並且交錯使用 DB:Raw()
的方式來取得資料。
不利用 Laravel 內建的 relation,而是自己設計出一套 relation 的結構。
這不僅僅可以讓後人痛苦萬分,還可以為自己的履歷上加入「曾自己用原生 PHP 實作資料表關聯」,為自己的履歷增色不少。
Laravel 解決 n+1 問題時,需要使用 eager loading 的方式。
不過,不使用 eager loading 也不會引起功能問題,所以我們可以不學這個東西。
如果之後有人抱怨程式效能很差,把問題怪罪到 Laravel ORM 的效能,並建議不使用 Laravel ORM。
Laravel 的多對多關聯做法,是在兩張表之間,加入一張中間表記錄這兩個物件的關聯。
可以設計一個不使用中間表的多對多關聯做法,或者作一個用 join
實作的多對多關聯。
這兩個都是非常刺激的定時炸彈,會在不知道什麼時候的未來引爆,對之後的維運工程師造成莫大的傷害。