数据库操作
<h2>第三方bundle的支持</h2>
<ul>
<li>bundle(软件)</li>
</ul>
<h2>获取数据</h2>
<pre><code class="language-php">$user_list = $em->getRepository('User')->find(array('id' => 1));
$user_info = $em->getRepository('User')->findOneBy(array('id' => 1));</code></pre>
<h2>修改数据</h2>
<pre><code class="language-php">$user->setName('user_name'); //修改字段名称
$em->presist($user); //实例化对象
$em->flush(); //生成一条upadte语句</code></pre>
<h2>Doctrine2基本概念</h2>
<ul>
<li>实体对象 Entity
<ul>
<li>字段 关系</li>
</ul></li>
<li>对象操作集合 Repository</li>
<li>代理类 Proxy Class</li>
<li>DQL,类似于PDO查询</li>
<li>事件监听机制</li>
</ul>
<h2>使用MySQL workbench进行数据库设计</h2>
<ul>
<li>设计数据库关系和主要字段</li>
<li>配置Symfony2数据库连接</li>
<li>配置Entity</li>
<li>生成get/set/repository</li>
<li>生成真实数据库</li>
</ul>
<h2>使用Doctrine2进行数据操作</h2>
<pre><code class="language-php">$user = new User(1, 2, 'wanguw');
$user->setAge(19);
$user->setEmail('wang@163.com');
$em = $this->getDoctrine()->getEntityManager();
$em->persist($user);
$em->flush();</code></pre>
<h2>直接调用sql语句</h2>
<pre><code class="language-php">$this->get('database_connection')->fetchAll('select * from user');</code></pre>
<h2>手动控制事务</h2>
<pre><code class="language-php">$user->getConnection()->beginTransaction();
try{
$user->getConnection()->commit();
} catch(Exception $e) {
$user->getConnection()->rollback();
}
// 或,第二种不建议用。
$user->transaction(function($user) {
//
});</code></pre>
<h2>打印信息</h2>
<pre><code class="language-php">Debug::dump($user);
// 不用系统自带打印功能,打印出来信息特别多,打印的都是封装的对象,信息特别多。</code></pre>