其他language的ORM, 一般都係寫好Model, 然後ORM會有function根據MODEL create db
例如:
https://hackersandslackers.com/m ... h-flask-sqlalchemy/
可能因為php的特性, php做唔到依種功能, 所以寫PHP, 唔配合DDL無辦法做開發
最近學習laravel, 竟然發現php都做到類似其他language的ORM功能
但係laravel做得比較奇怪, 一開始create一個唔完善的, 然後後面加好多個file去完善, 仲要每個table獨立一組file, 一個中小project隨時3-40個table, 每個table改兩三次, 隨時整超過100個migration file出黎
正常其他ORM/DDL, 都只會改最初既source, 好似laravel咁將同一個table既Definition分散係咁多個file入面, 唔明有咩好處
網上一般講法係話可以控制DB既版本, 但係, 如果DB改左, program部份一樣要改新版先可以配合到, 所以將一般既ORM Model/DDL放入git, 一樣可以控制版本, 所以控制版本唔係幾講得通
而且用左migration, 效果低好多. 正常table加一個col, 只要打開Model/DDL, 係相關位置copy一行, 改個名就得. 但laravel要打command add一個加col的php, 再係入面的up同down加入相關function, 相差既時間唔只一兩倍
最後就係production交貨, 傳統上交Model/DDL算合理, 如果無寫docs, 淨係依兩樣都可以當作一定程度既docs, 但係睇migration file就會好難睇
所以migration係咪預你只在development果陣用, 交貨時係咪應該重新寫個DDL用黎裝機? |