數據庫和Doctrinephp
讓咱們來面對這個對於任何應用程序來講最爲廣泛最具挑戰性的任務,從數據庫中讀取和持久化數據信息。幸運的是,Symfony和Doctrine進行了集成,Doctrine類庫所有目標就是給你一個強大的工具,讓你的工做更加容易。mysql
Doctrine是徹底解耦與Symfony的,因此並不必定要使用它。sql
一個簡單例子:一個產品,咱們首先來配置數據庫,建立一個Product對象,持久化它到數據庫並把它讀回來。數據庫
首先咱們須要建立一個bundle:服務器
$php app/console generate:bundle --namespace=Acme/StoreBundlehttp://open.189works.com/product/product.htm
配置數據庫
在開始以前,首先須要配置數據庫鏈接信息。根據慣例,這些信息一般會配置在app/config/parameters.ini 文件中。app
;app/config/parameters.ini[parameters] database_driver = pdo_mysql database_host = localhost database_name = test_project database_user = root database_password = passwordhttp://open.189works.com/product/product.htm
將配置信息定義到parameters.ini文件中也是一個經常使用的作法。定義在該文件中的配置信息將會被主配置文件在安裝Doctrine時引用。ide
doctrine: dbal: driver: %database_driver% host: %database_host% dbname: %database_name% user: %database_user% password: %database_password%
經過把數據庫信息分離到一個特定的文件中,你能夠很容易的爲每一個服務器保存不一樣的版本。如今Doctrine知道你的數據庫配置了,你能夠用它來建立一個數據庫了。工具
$php app/console doctrine:database:create
建立一個實體類:
假設你建立一個應用程序,其中有些產品須要展現。即時不考慮Doctrine或者數據庫,你也應該知道你須要一個Product對象來表現這些產品。在你的AcmeStoreBundle的Entity目錄下建立一個類。學習
// src/Acme/StoreBundle/Entity/Product.phpnamespace Acme\StoreBundle\Entity;class Product{ protected $name; protected $price; protected $description;}
這樣的類常常被稱爲「Entity",意味着一個基礎類保存數據。它們簡單來知足你應用程序的業務須要。不過如今它還不能被保存到數據庫中,由於如今它只不過仍是個簡單的PHP類。一旦你學習了Doctrine背後的概念,你可讓Doctrine來爲你建立實體類。spa
$php app/console doctrine:generate:entity --entity="AcmeStoreBundle:Product" --fields="name:string(255) price:float description:text"