数据库和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"