Doctrine2壓縮包的tools目錄用來做一些命令列工作。這裡主要說一下透過tools,把資料庫的表結構自動產生yml/xml/entities,原因是寫那些東西太浪費時間了有木有。
1.透過Doctrine 的orm:convert-mapping指令產生xml/yml
Usage: orm:convert-mapping [options] [--] <to-type> <dest-path> orm:convert:mapping Arguments: to-type The mapping type to be converted. dest-path The path to generate your entities classes. Options: --filter=FILTER A string pattern used to match entities that should be processed. (multiple values allowed) --force Force to overwrite existing mapping files. --from-database Whether or not to convert mapping information from existing database. --extend[=EXTEND] Defines a base class to be extended by generated entity classes. --num-spaces[=NUM-SPACES] Defines the number of indentation spaces [default: 4] --namespace[=NAMESPACE] Defines a namespace for the generated entity classes, if converted from database. -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Help: Convert mapping information between supported formats. This is an execute one-time command. It should not be necessary for you to call this method multiple times, especially when using the --from-database flag. Converting an existing database schema into mapping files only solves about 70-80% of the necessary mapping information. Additionally the detection from an existing database cannot detect inverse associations, inheritance types, entities with foreign keys as primary keys and many of the semantical operations on associations such as cascade. Hint: There is no need to convert YAML or XML mapping files to annotations every time you make changes. All mapping drivers are first class citizens in Doctrine 2 and can be used as runtime mapping for the ORM. Hint: If you have a database with tables that should not be managed by the ORM, you can use a DBAL functionality to filter the tables and sequences down on a global level: $config->setFilterSchemaAssetsExpression($regexp);
上面是help,下面來一個實例
/var/www/doctrine下面(有的菜鳥問了,cd是個什麼東東,為毛是這個目錄~~cd是什麼呢,拜拜,這種問題百度去。為什麼是這個目錄呢,這是項目文件夾,總之這下面就有doctrine的包了)。前面指令省略解釋,解釋後面的「xml」意思是產生的檔案類型,「config/xml/」是xml存放目錄 ,--from-database的意思是從資料庫產生。 2.生成yml了,然後就要生成entities了
/var/www/doctrine$ php vendor/bin/doctrine orm:convert-mapping xml config/xml/ --from-database
/var/www/doctrine/src下面,純粹測試用,後期架構會變化的要先生成yml再生成entities,無法直接生成entities,反正我沒成功,可能操作問題?
PHP ORM這篇文章太少了,因為這篇不常用,說白了PHP ORM卵用不大,純粹方便
以上就介紹了Doctrine248 命令列工具產生yml/xml/entities,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。