Symfony2 Doctrine ORM 安装配置

第1步:下载Bundle

$ composer require doctrine/doctrine-bundle

此命令要求您全局安装Composer,如Composer文档的安装章节中所述

DoctrineBundle git安装包  https://github.com/doctrine

第2步:启用Bundle

然后,通过在app/AppKernel.php 项目文件中添加以下行来启用该包:

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
        );

        // ...
    }

    // ...
}

配置数据库

数据库配置文件

# app/config/parameters.yml
parameters:
    database_host:      localhost
    database_name:      test_project
    database_user:      root
    database_password:  password

# ...

应用配置文件

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8
        # if using pdo_sqlite as your database driver, add the path in parameters.yml
        # e.g. database_path: %kernel.root_dir%/data/data.db3
        # path:     %database_path%
        mapping_types:
            enum: string
            set: string
            varbinary: string
            tinyblob: text
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true

创建实体类

// src/AppBundle/Entity/Product.php
namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=100)
     */
    private $name;

    /**
     * @ORM\Column(type="decimal", scale=2)
     */
    private $price;

    /**
     * @ORM\Column(type="text")
     */
    private $description;
}

doctrine 命令
php app/console doctrine:generate:entity 创建实体类

php app/console doctrine:schema:update --dump-sql 展示sql的差异

php app/console doctrine:schema:update --force --full-database 创建数据表

php app/console doctrine:schema:validate 实体类添加映射信息

php app/console doctrine:generate:entities AppBundle/Entity/Product 实体类生成Getters和Setters

持久化对象到数据库

// src/AppBundle/Controller/DefaultController.php

// ...
use AppBundle\Entity\Product;
use Symfony\Component\HttpFoundation\Response;

// ...
public function createAction()
{
    $product = new Product();
    $product->setName(‘Keyboard‘);
    $product->setPrice(19.99);
    $product->setDescription(‘Ergonomic and stylish!‘);

    $em = $this->getDoctrine()->getManager();

    // tells Doctrine you want to (eventually) save the Product (no queries yet)
    // 告诉Doctrine你希望(最终)存储Product对象(还没有语句执行)
    $em->persist($product);

    // actually executes the queries (i.e. the INSERT query)
    // 真正执行语句(如,INSERT 查询)
    $em->flush();

    return new Response(‘Saved new product with id ‘.$product->getId());
}

参考地址:http://www.symfonychina.com/doc/current/doctrine.html

     https://stackoverflow.com/questions/13670471/database-fail-the-database-schema-is-not-in-sync-with-the-current-mapping-file

     https://my.oschina.net/imot/blog/176661

原文地址:https://www.cnblogs.com/jiafeimao-dabai/p/10115186.html

时间: 2024-11-04 21:29:05

Symfony2 Doctrine ORM 安装配置的相关文章

概述hibernate入门安装配置

1.jdbc连接的优缺点 JDBC的优点 直接底层操作,提供了很简单.便捷的访问数据库的方法,跨平台性比较强.灵活性比较强,可以写很复杂的SQL语句. JDBC的缺点 1).因为JAVA是面向对象的,JDBC没有做到使数据能够面向对象的编程,使程序员的思考仍停留在SQL语句上. 2).操作比较繁琐,很多代码需要重复写很多次. 3).如果遇到批量操作,频繁与数据库进行交互,容易造成效率的下降. Jdbc是一个比较底层的东西,灵活写SQL语句 1).注册驱动 2).获得连接 3).产生一个State

hadoop1.2.1+hbase0.94.11+nutch2.2.1+elasticsearch0.90.5安装配置攻略

一.背景 最近由于项目和论文的需要,需要搭建一个垂直搜索的环境,查阅了很多资料,决定使用Apache的一套解决方案hadoop+hbase+nutch+es.这几样神器的作用就不多作介绍了,自行参考各类百科就行了.我选择这样的方案主要是基于以下考虑: 1.可扩展,虽然只是实验环境,但是以后在项目中是要应用到生产中的,随着数据量的增大,需要的硬件设备能够方便的加入进来,所以选择了分布式的方案中最具人气的hadoop+hbase组合 2.数据来源兼容,nutch2以后集成了gora和tika,可以方

CentOS 6.9中Telnet的安装配置

Telnet:TCP/IP协议中的一员,是Internet远程登录服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.要开始一个Telnet会话,必须输入用户名和密码来登录服务器.Telnet是常用的远程控制Web服务器的方法,监听TCP的23号端口. xinetd:新一代的网络超级守护进程,经常用来管理多种轻量级的Internet服务.xinetd提供类似于inetd+tcp_wrapper的功能,但它更强大更安全.xinetd能够同时监听多个指定的端口,在接受用户请

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

47 监控系统基础及zabbix介绍、zabbix工作原理及安装配置、zabbix on CentOS7、zabbix配置

02    zabbix工作原理及安装配置 配置环境 node1192.168.1.120CentOS6.7 node2192.168.1.121CentOS6.7 1.安装配置zabbix #安装前准备 [[email protected] ~]#yum -y install mysql-server mysq [[email protected] ~]# mysql mysql> CREATE DATABASE zabbix CHARACTER SET utf8; mysql> GRANT

详解“FTP文件传输服务”安装配置实例

"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsftpd.conf配置文件详解 配置FTP服务器实例 实例:配置匿名用户 实例:配置本地用户登录 实例:配置虚拟用户登录(MySQL认证) 实例:控制用户登录 实例:设置欢迎信息 分析vsftpd日志管理 FTP服务器配置与管理 简介 FTP 是File Transfer Protocol(文件传输协议)的英文简

redis应用之安装配置介绍

一.redis介绍: 1.redis定义: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都

Linux下安装配置MongoDB数据库

说明: 操作系统:CentOS 5.X 64位 IP地址:192.168.21.130 实现目的: 安装配置MongoDB数据库 具体操作: 一.关闭SElinux.配置防火墙 1.vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq!  #保存退出 setenforce 0 #使配置立即生效 2.vi /etc/sysconfig/iptables  

Linux下安装配置Apache服务器

Linux下安装配置Apache服务器 1. 安装Apache [[email protected] ~]# yum –y install httpd 2. 启动Apache [[email protected] ~]# systemctl start httpd 3. 查看进程 [[email protected] ~]# systemctl status httpd httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib