2011-03-15 92 views
2

我正在學習symfony2併爲此做一個演示示例。生成單個實體時調用「在非對象上調用成員函數」

當我試圖運行下面的命令。

 
$php app/console doctrine:generate:entities HelloBundle 

其工作正常。但它會生成所有的實體。

,但如果我要生成特定那麼一個實體

 
$php app/console doctrine:generate:entities HelloBundle --entity="User" 

它給了以下錯誤

 
$ php console doctrine:generate:entities HelloBundle --entity="Messages" 
Generating entities for "HelloBundle" 

PHP Fatal error: Call to a member function getShortName() on a non-object in /home/prakash/web/Symfony/vendor/symfony/src/Symfony/Bundle/DoctrineBundle/Command/GenerateEntitiesDoctrineCommand.php on line 63 
+0

聽起來好像是一個錯誤。嘗試將其報告給Symfony Dev郵件列表。 – Craige 2011-03-17 04:41:35

+0

當我運行這個命令,它給了我錯誤'文件名,目錄名稱或卷標語法不正確'。可以任意1幫助? – Shaun 2011-03-28 08:57:58

回答

2

老問題,但我只是在做這個!

看來你使用的是Linux,所以打開終端,cd到Symfony的應用程序目錄,然後運行./console --shell

這會調出交互式shell,您可以通過零散的命令運行它,如果速度不慢,我發現它更有幫助。

當shell打開時,輸入doctrine:generate:entity,它會運行你通過一個小嚮導,你可以創建一個特定的包的單個實體。它會先詢問你的名字,例如。 HelloBundle:EntityName,那麼它會詢問使用的語法(yml,xml,annotation),然後它會讓你輸入字段及其類型。

這樣做後(如果你想),當字段名稱爲空時觸擊返回,它會問你是否要爲實體生成存儲庫類,最後確保你想生成它。再次擊中返回,你的實體文件將被製作。

我嘗試了OP中描述的單線命令方式,但得到了奇怪的錯誤(可能做錯了),但它可能是一個簡單的例子,採取該命令並用entity代替entities

更多信息:http://symfony.com/doc/current/book/doctrine.html

相關問題