大家好,今天來談談 Laravel中的Model 是什麼
在Laravel中的Model。跟之前的CLASS的Model(模組)的解釋會有些不同。
所以為了避免一些誤會,常用的說法就是 ORM
ORM是什麼?就單純的解釋是(Object-Relational Mapping)
整體來說,就是一種資料庫編程的技術統稱。
我常常在教學中,都會問一件事。
到底,ORM是不是DB物件的一種呢?
其實很多人,都把ORM當成DB物件看待。而將它認為其就是操作資料庫的用法。
但我並不會這樣去做解釋。因為很容易給搞混。及寫做方式。
沒錯,雖然ORM的確也是可以去操作SQL語法應用。
但如果將它視為一種DB操作的物件。
那麼您將學不會ORM的精華及原理。
站長我個人,其實是將ORM視為一種「資料容器」的概念。
也就是說,我並不會當它是一個DB控制用的物件。
而是將其當為一種資料庫設計圖兼容器的東西。
這邊說說一個小故事,是以前站長經歷過的事情。
其實站長我本身也是屬於SQL優化能力很強的人。
所以對於SQL語法來說,要怎麼處理操作多複雜性且不影響效能的寫法是很得心應手的。
但在多年前第一次觸摸 ORM 時。真的覺得很難用。
畢竟那時還是將ORM當DB操作再使用。
什麼一對一啊、一對多啊的觀念都還沒有。
資料的讀取還是直接用子查訊+JOIN的處理方式。
這對ORM來說,原本就不給你使用子查訊跟JOIN。
自然用起來會覺得很難順手。
所以初期Laravel中,我其實很少用 MODEL 的東西。大多還是使用DB的處理方式。
但就覺得這樣的使用方式,也並沒想像中的好用。
一度很想放棄ORM的方式。
直到有一天,有個高手問了我一開頭問的話。「ORM是不是DB物件的一種呢?」
我當時回答「是啊,難到不是嘛??」
他只笑笑的跟我說「難怪你會覺得ORM難用,有心學看好官方文件,並拋棄你SQL語法的能力」
然後就不再理我了。
為此,我意識到了一件事「會不會我搞錯了ORM了?」
當然其實他有告訴我。「不要將ORM當DB物件用」
於是我就開始研究啥是ORM。
其實我前前後後,大約摸了3個多月。並試著將我以前一些很複雜的SQL語法。改寫成ORM的程式編程。
其間也跌跌撞撞不少問題出來。
如不用JOIN。那要怎麼處理??從一對一、一對多中。摸索出為何不能用JOIN。
一直到後期研究到多態關係。
研究好ORM後,才慢慢的知道ORM的好處在哪邊。
以上是題外話啦!後期我會慢慢的教ORM的用法處理
在Laravel中的Model。跟之前的CLASS的Model(模組)的解釋會有些不同。
所以為了避免一些誤會,常用的說法就是 ORM
ORM是什麼?就單純的解釋是(Object-Relational Mapping)
整體來說,就是一種資料庫編程的技術統稱。
我常常在教學中,都會問一件事。
到底,ORM是不是DB物件的一種呢?
其實很多人,都把ORM當成DB物件看待。而將它認為其就是操作資料庫的用法。
但我並不會這樣去做解釋。因為很容易給搞混。及寫做方式。
沒錯,雖然ORM的確也是可以去操作SQL語法應用。
但如果將它視為一種DB操作的物件。
那麼您將學不會ORM的精華及原理。
站長我個人,其實是將ORM視為一種「資料容器」的概念。
也就是說,我並不會當它是一個DB控制用的物件。
而是將其當為一種資料庫設計圖兼容器的東西。
這邊說說一個小故事,是以前站長經歷過的事情。
其實站長我本身也是屬於SQL優化能力很強的人。
所以對於SQL語法來說,要怎麼處理操作多複雜性且不影響效能的寫法是很得心應手的。
但在多年前第一次觸摸 ORM 時。真的覺得很難用。
畢竟那時還是將ORM當DB操作再使用。
什麼一對一啊、一對多啊的觀念都還沒有。
資料的讀取還是直接用子查訊+JOIN的處理方式。
這對ORM來說,原本就不給你使用子查訊跟JOIN。
自然用起來會覺得很難順手。
所以初期Laravel中,我其實很少用 MODEL 的東西。大多還是使用DB的處理方式。
但就覺得這樣的使用方式,也並沒想像中的好用。
一度很想放棄ORM的方式。
直到有一天,有個高手問了我一開頭問的話。「ORM是不是DB物件的一種呢?」
我當時回答「是啊,難到不是嘛??」
他只笑笑的跟我說「難怪你會覺得ORM難用,有心學看好官方文件,並拋棄你SQL語法的能力」
然後就不再理我了。
為此,我意識到了一件事「會不會我搞錯了ORM了?」
當然其實他有告訴我。「不要將ORM當DB物件用」
於是我就開始研究啥是ORM。
其實我前前後後,大約摸了3個多月。並試著將我以前一些很複雜的SQL語法。改寫成ORM的程式編程。
其間也跌跌撞撞不少問題出來。
如不用JOIN。那要怎麼處理??從一對一、一對多中。摸索出為何不能用JOIN。
一直到後期研究到多態關係。
研究好ORM後,才慢慢的知道ORM的好處在哪邊。
以上是題外話啦!後期我會慢慢的教ORM的用法處理