iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
2
Mobile Development

如何用 Laravel 撰寫難以維護的專案系列 第 10

[Day 10] 聊 model 的設計!如何設計出難以維護的 model

  • 分享至 

  • xImage
  •  

來到了第十天,我們終於開始談到 MVC 的部分了!

今天我們來談談怎麼設計出難以維護的 model。

不使用 model

Larvel 的 ORM model 使用起來非常簡潔,並且無論是閱讀或者是修改起來都相對簡單。

所以,要讓之後的人難以維護的話,最單純的方法就是:不要用 model。

要存取資料庫的話,我們可以用 PHP 原生的 PDO,如果要更難維護一點,可以用 mysqli_ 系列的函式。

如果一定要用 Laravel 內的功能,可以善用 Laravel 的 Query Builder,並且交錯使用 DB:Raw() 的方式來取得資料。

自製 relation

不利用 Laravel 內建的 relation,而是自己設計出一套 relation 的結構。

這不僅僅可以讓後人痛苦萬分,還可以為自己的履歷上加入「曾自己用原生 PHP 實作資料表關聯」,為自己的履歷增色不少。

eager loading

Laravel 解決 n+1 問題時,需要使用 eager loading 的方式。

不過,不使用 eager loading 也不會引起功能問題,所以我們可以不學這個東西。

如果之後有人抱怨程式效能很差,把問題怪罪到 Laravel ORM 的效能,並建議不使用 Laravel ORM。

多對多關聯

Laravel 的多對多關聯做法,是在兩張表之間,加入一張中間表記錄這兩個物件的關聯。

可以設計一個不使用中間表的多對多關聯做法,或者作一個用 join 實作的多對多關聯。

這兩個都是非常刺激的定時炸彈,會在不知道什麼時候的未來引爆,對之後的維運工程師造成莫大的傷害。


上一篇
[Day 9] 談透過 database migration 讓專案難以維護
下一篇
[Day 11] MVC 框架的第二課!談如何設計難以維護的 view
系列文
如何用 Laravel 撰寫難以維護的專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言