簡體   English   中英

沒有Eloquent和數據庫遷移的Laravel?

[英]Laravel without Eloquent & database migrations?

我已經成為一名PHP程序員已有12年了,而且很多次重新發明了這個輪子,為我們的閉源網絡應用程序構建了自己的框架,該框架作為托管解決方案提供,使用相同的共享數據庫顧客。

現在我正在嘗試Laravel 5,並注意到幾乎每個例子都使用Eloquent和數據庫遷移。 對我來說,似乎這些東西都是針對簡單的數據庫以及不喜歡SQL或數據庫設計的人(但我可能錯了)。

我們的MySQL數據庫包含100多個表,許多存儲過程和許多觸發器,我無法想象在ORM中。 我們使用Navicat進行數據庫設計和測試SQL查詢。 為了將數據庫升級到更新版本的應用程序,我們已經編寫了一些很好的腳本甚至可視化工具。

所以基本上我的問題是,如果Laravel真的打算用於Eloquent和遷移,或者我真的錯過了很多沒有它們的功能。

您有什么推薦的嗎?

由你決定,

Laravel遷移旨在保持數據庫版本(同時使用版本控制器),eloquent旨在簡化表之間的關系映射,適用於復雜情況,如多個Join,並且由於性能問題而不推薦所有它,然后您可以選擇更好的Query Builder性能,你需要在Laravel中使用\\DB::statement();寫簡單查詢\\DB::statement();

Laravel是Angular Js的完美搭檔,更多Laravel只是幾個不錯的PHP組件的包裝,能夠提供快速的結果。

希望能幫助到你..

使用ORM可以簡化您的生活,因為大多數常見方案已經涵蓋在內。 獲取數據,管理關系和急切/延遲加載是輕而易舉的。 它還可以保護您免受編寫自己的硬編碼查詢時可能產生的任何注入漏洞的影響。 當然,並非所有場景都可以由ORM處理,因此可以編寫RAW查詢。 使用Laravel的Query Builder您可以執行以下操作:

$results = DB::select( DB::raw("SELECT * FROM users WHERE username = :username"), ['username' => 'johndoe']);

如果你想執行像ALTERSET這樣的東西,你可以使用DB::Statement

所以,只是要注意, Eloquent是Laravel的ORM,而Query Builder是一種安全的方式來建立查詢圖層。

因此,是否使用Eloquent取決於你,我相信他們已經用一個堅實的ORM做了很好的事情,但你總是可以自由地實現另一個ORM,如Doctrine,Data Mapper等。大多數都有Laravel綁定那些。

編輯:值得一提的是,一個Eloquent模型提供了一些方便的額外功能,也簡化了一些事情,比如JSON轉換__toString,受保護的屬性,日期轉換等。當獲取多個模型時,它們將存儲在一個Collection ,一個提供均勻的Arrayable中為快樂時光做出更多方法。 請查看: http//laravel.com/docs/5.1/eloquent-collections

如果需要,您可以在Laravel中運行簡單的SQL查詢,但實際上大多數示例都使用Eloquent

我一直在做超過100個表的項目,大多數情況下,每次都可以使用Eloquent而不是放置原始SQL查詢,但這是我的偏好。

但是,您提到在數據庫中有許多存儲過程和觸發器。 說實話,你應該重新考慮一下,因為現在你可能會把很多業務邏輯放到數據庫中,你的邏輯就在數據庫和應用程序中。

我在幾個月前看到MsSQL中有這樣的數據庫而且很糟糕 - 沒有人真正知道發生了什么,當你想將這個數據庫遷移到MySQL和Laravel應用程序時,這是一個很大的問題,因為數據庫中存在太多邏輯(我沒有參加這個項目只看了一眼)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM