是否有任何PHP ORM可以自動將我的數據庫同步到代碼中定義的模式?PHP ORM自動模式同步
問題是,我有很多機器部署代碼並且無法訪問命令行,並且在部署完成時不知道。
基本上,我需要在PHP看到代碼中定義的架構發生變化時立即重新同步數據庫,而不需要任何命令行,甚至不需要手動遷移。
ORM的任何一個已經解決了嗎?
是否有任何PHP ORM可以自動將我的數據庫同步到代碼中定義的模式?PHP ORM自動模式同步
問題是,我有很多機器部署代碼並且無法訪問命令行,並且在部署完成時不知道。
基本上,我需要在PHP看到代碼中定義的架構發生變化時立即重新同步數據庫,而不需要任何命令行,甚至不需要手動遷移。
ORM的任何一個已經解決了嗎?
嘗試學說ORM
http://www.doctrine-project.org/ 使用的symfony它內置了集成學說其功能非常強大
紅豆就是你想要什麼:http://www.redbeanphp.com/
它可以讓你在關注你的代碼通過即時更新您的架構來實現開發階段,並讓您在生產之前優化您的架構。
RedBean帶有一個名爲redshoe的同步工具,可以爲您同步任何MySQL數據庫。你不需要命令行訪問,它可以把你需要的SQL放在屏幕上。另一種方法是在RedBean中使用querylogger,並記錄所有修改並將它們發送到其他服務器。
正如user716189所說,RedBean是一個很好的解決方案。
與'Slava N'說的不同,你可以使用一對多的關係。 RedBeanPHP沒有什麼特別的功能來處理外鍵關係,但是使用外鍵或N:1間的關聯手工很簡單:
$page->book_id = $book->id
和加載一個外鍵關聯也是一個沒有腦子:
$pages = R::find("page"," book_id = ? ",array($book->id));
或者周圍的其他方法:引自
$book = R::load("book", $page->book_id);
:RedBean Relations(和固定的一些錯字)
紅豆2完全支持N:1間的關係,將在8月1日
發佈其實db.php中ORM(http://dbphp.net)只有一個方法,那$database->update()
在SYNCHS ORM定義的每個SQL連接鏈路上的所有內容。
您還可以將舊錶重命名爲新名稱或將舊字段重命名爲新字段。例如,如果你有外地的用戶名和財產的用戶名,然後重命名你的財產登錄:
/**
* rename username
*/
public $login
這將重命名字段的用戶名登錄(在與此相關的類表)。
是的,我實現了一個 - 一個ORM,可以自動同步或不同模式更改與任何數據庫。 (多個數據源也支持)
您可以嘗試LazyRecord https://github.com/c9s/LazyRecord
LazyRecord集成了全功能的基於PHP的架構和相關的遷移功能。
最強大的功能是 - 自動遷移,它類似於UIKit的輕量級數據庫遷移。
該項目已經積極開發超過5年,並已部署到許多生產環境。
這裏有一些截屏:
您也可以手動編輯自動生成的遷移腳本
紅豆那種千篇一律的,但它不會讓你定製用於傳統數據庫架構。 ESP。一對多關係(RedBean無論如何都是多對多的) – 2011-04-27 14:43:01
這是不正確的,你也可以與RedBeanPHP建立一對多的關係。我用一個示例發佈了一個新答案(對於代碼示例使用註釋並不方便) – dvb 2011-05-26 09:38:44