簡體   English   中英

Symfony2數據庫創建實體

[英]Symfony2 Database Create Entities

我最近從前一位同事那里繼承了許多Symfony2應用程序。 我已經與Symfony2一起玩了足夠的東西,以至於我了解了Acme演示中發生的事情的基本知識。 我的老板希望我開始查看他編寫的一些代碼,因為有些事情需要立即進行更新。 我應該注意,我開始全新安裝的symfony,並且開始嘗試重新創建自己所看到的內容-在每一點上,我都在尋找與前同事相比我是如何做的。

現在,我需要從已建立的數據庫創建實體。 我已經在app / config / parameters.yml中設置了數據庫配置

現在創建實體以匹配數據庫的最佳方法是什么? 我使用了php app/console generate:doctrine:entities但是在我輸入所有字段之后,我不斷收到匹配錯誤,其中symfony將查找“ status_id3”而不是“ status”。 這是我得到的錯誤:

An exception occurred while executing 'SELECT t0.id AS id1, t0.library_id AS library_id2, t0.status_id AS status_id3, t0.name AS name4, t0.total AS total5, t0.available AS available6, t0.in_use AS in_use7, t0.offline AS offline8 FROM Lab t0 ORDER BY t0.name ASC':

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'labstats.Lab' doesn't exist

非常感謝您的幫助!

原則是數據庫抽象層。 這意味着您編寫的所有涉及Doctrine實體和getter / setter函數的代碼都是Doctrine實際向MySQL查詢的內容的高級抽象(帶有AS語句和高度唯一的名稱,以及獲取對象的ID而不是實際的ID)。對象,只會延遲加載。)

您可以從Doctrine文檔中自行學習所有這些細節,但這只是一個簡短的提要。

無論哪種方式,您都會誤解MySQL錯誤。 當錯誤明確指出整個表labstats.Lab不存在時,為什么您會認為MySQL在抱怨t0.status_id AS status_id3 可能的罪魁禍首是您的數據庫架構與“學說實體”的元數據不匹配。

doctrine:generate:entities命令將為您自動創建您的getter / setter函數,但是直到您按照本文檔從控制台運行doctrine:schema:update ,數據庫架構才會被使用 沒有--force標志,學說只會驗證架構,並讓你知道要發生更新架構的SQL查詢的數量(有看到他們使用選項--dump-sql )。隨着--force標志,Doctrine將為您運行它們(在生產環境中不建議這樣做。相反,您應該使用migrations 。)

暫無
暫無

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

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