doctrine2 mysql_Hello Doctrine2
I. 初始化环境
2. include_path设定
解压缩后将DoctrineORM-2.0.0目录下的Doctrine 放到include_path涉及的目录,放好后目录结构如下:
3. 建立项目布局
将tools\sandbox目录下的index.php复制到自己的项目目录下作为doctrine2的开端是一个比较好的实践。复制过来需要修改该文件的两处:
1).将
require '../../lib/Doctrine/Common/ClassLoader.php';
修改为
require 'Doctrine/Common/ClassLoader.php';
(因为前面已经将doctrine2的包放到了include_path涉及的目录)
2).将下面代码
$user = new User;
$address = new Address;
注释掉
4. 运行Index.php
php index.php 输出 Hello World!
II. 数据库操作
1. 修改数据库连接
index.php原有一处
$connectionOptions = array(
'driver' => 'pdo_sqlite',
'path' => 'database.sqlite'
);默认链接sqlite数据库,但是如果你的服务器没有enable它,或者向连接到mysql数据,请修改为:
$connectionOptions = array(
'dbname' => 'mydb',
'user' => 'root',
'password' => '',
'host' => '127.0.0.1',
'driver' => 'pdo_mysql',
);
(具体参数根据你的服务器配置做相应修改)
2. 建立实体文件到index.php的Entities目录下
这里以User为例:
namespace Entities;
/** @Entity @Table(name="users") */
class User {
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $user_id;
/** @Column(type="string", length=50) */
private $name;
private $address;
public function getUserId(){
return $this->user_id;
}
public function getName(){
return $this->name;
}
public function setName($name){
$this->name = $name;
}
}
3. 建立数据库schema
CREATE TABLE `users` (
`name` varchar(32) default NULL,
`user_id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`user_id`)
);
4. 修改index.php.
1). 在index.php头部use前面建立的实体类
use Entities\User; //实际默认已经引用了该类.
2) 在index.php末尾增加如下代码
$user = new User;
$user->setName('Allen');
$em->persist($user);
$em->flush();
5. 重新运行index.php
查看数据库,看到如下结果
mysql> select * from users;
+-------+---------+
| name | user_id |
+-------+---------+
| Allen | 1 |
+-------+---------+
1 row in set (0.00 sec)
附件是项目代码,请参考
大小: 3.4 KB
分享到:
2010-05-09 11:50
浏览 4055
评论
doctrine2 mysql_Hello Doctrine2相关推荐
- php中求数据库两个数的和,php – Doctrine2和Zend框架中的多个数据库连接
我不瘦,你可以将实体绑定到特定的连接,它在Doctrine 2架构中没有意义. 另一方面,你可以做的是拥有两个EntityManagers,每个都有不同的连接选项.您必须在业务逻辑中决定哪个实体由哪个 ...
- php query builder,php – Symfony2 – Doctrine2 QueryBuilder WHERE I...
对于您的解决方案,您可以使用带有HAVING和GROUP BY子句的COUNT(DISTINCT) public function findByServices($services) { $qb = ...
- php 去除实体,php – 如何在学说中正确关闭实体管理器
我在Doctrine2脚本中遇到了内存泄漏问题,这个问题通常是由一段代码消除内存问题造成的. 在我知道你可以(并且应该)清除实体管理器之前,每20次迭代我做了以下事情: if ($this->u ...
- 结合MongoDB开发LBS应用
http://www.cnblogs.com/jifeng/p/4356052.html 然后列举一下需求: 1.实时性要高,有频繁的更新和读取 2.可按距离排序支持分页 3.支持多条件筛选(一个经纬 ...
- Symfony2Book04:Doctrine03-对象关系映射(ORM)
Doctrine是一个基于PHP的对象关系映射(ORM),它构建在强大的数据库抽象层(DBAL)之上,透明地为PHP对象提供持久化. 你可以从官方文档中读到更多关于Doctrine ORM 的内容. ...
- 高级php平时的工作,【高级PHP开发工作内容|工作职责|高级PHP开发做什么】-看准网...
职位要求 1.能非常熟练PHP开发和调试语言:并且在Python/Ruby/Perl语言上有更好经验:良好的编码风格习惯和测试习惯维持系统的质量: 2.乐于维持和提高团队的专业水平,甚至正面影响其他开 ...
- php的ddd,在MVC框架中实现DDD – PHP
在mvc中,模型是一个层,它包含所有的域业务逻辑. 在域驱动设计中,业务逻辑可以分为各种构建块. 在域驱动设计域模型中. A domain model is a system of abstracti ...
- 转:PHP开发框架流行度排名:Laravel居首
原文来自于:http://www.sitepoint.com/best-php-frameworks-2014/ Update: If you'd like to take part in the n ...
- 听 Fabien Potencier 谈Symfony2 之 《What is Symfony2 ?》
Symfoy2 是什么? PHP世界里又一广受关注的web MVC框架? Fabien Potencier 却不这么说! Fabien Potencier这样定义Symfoy2 是个什么东西: 首先, ...
- PHP第十次实验总结,The Clean Architecture in PHP 读书笔记(十)
laravel 这是clean architecture的第十篇,也是具体案例的第二篇,本篇会通过使用laravel框架,来开发我们的应用. 本文为系列文章的第十篇,完成的目录请查看Clean Arc ...
最新文章
- 新日光Q3收入亏损8400万美元缩水33.85%
- numpy a[...,:2]
- 三十二、R语言基本语法(下篇)
- 洛谷P1801 黑匣子 双堆套路的使用
- 中文转数字 java_java将阿拉伯数字转换为中文数字
- python汉诺塔运行程序_用python编写一个程序,得到汉诺塔的解决方案
- 【基础】算法时空复杂度【OI缩水版】
- java 多态 重载的区别_重写、覆盖、重载、多态几个概念的区别分析
- 超过130个你需要了解的vim命令
- java 毕向东_毕向东java视频目录
- max30102c语言程序,STM32驱动MAX30102源码
- 发布一款小软件:和讯博客助手-测试版- 0.3.0
- python获取四六级成绩单
- 360木马查杀后mysql数据不能启动
- 2012 年美国总统候选人政治献金 数据分析(numpy+pandas)
- 史上最健康的养胃时间表
- 求矩阵主对角线元素及副对角线元素之和
- vue遍历输出列表中以逗号隔开的字符串
- 王者荣耀坦克位思路和上分必读知识
- HDU2452 Navy maneuvers 记忆化搜索
热门文章
- 东华大学(C++)OJ题目收集(代码详解版)
- 麦客表单无法登录打开显示空白怎么办?
- 离散数学 (上)小结
- Q4营收突破20亿且连续四个季度盈利斗鱼驶入“后直播时代”快车道
- 真正的高手,都在自讨苦吃——数显之家快讯之【SHIO世硕心语】
- centos安装图形化界面及vnc-server连接
- Javascript的交互性
- 【HTML】HTML网页设计-----游戏网页设计
- Fluentd (td-agent) 日志处理
- Android:Content has been consumed