数据库使用,console命令含义

by admin on 2019年2月27日

    symfony可以依据数据用一度有表反向变化实体,以3.3.*为例:

part1:依照symfony4的入门过1回+路由介绍(见@route):

composer create-project symfony/skeleton ./practice

composer require server –dev  服务器

composer require annotations   路由

composer require –dev profiler  debug

数据库使用,console命令含义。在本人的在此以前一章Symfony之十分钟入门说了怎么生成数据库,然后设计实体Entity,再一起数据库的表结构,一般大家的顺序都以如此:生成数据库->设计实体Entity->同步数据库表结构。

<h3>Available commands:</h3>
help 展现命令的拉拉扯扯音讯
list 命令列表

          php bin/console doctrine:mapping:import –force
AppBundle xml

part2:进阶开发

而是只要您想要在设计Entity前,先本身创办数据库和表结构,再生成Entity;大概是在设计Entity,同步数据库表结构从此,Entity文件全体误删丢失想找回来。下边介绍方法。

<h3>assetic</h3>
assetic:dump 将装有asset保存到文件系统。
assets
assets:install 在公用网站目录中设置各Bundle网站的asset。

          从现有数据库创设实体类的首先步是讲求Doctrine内省数据库并转移对应的元数据文件。元数据文件描述要基于表字段生成的实体类。
 

1.数据库实体操作&&bin/console介绍:

composer create-project symfony/skeleton ./html   生成symfony的骨子文件

composer require doctrine maker  建议选择doctrine
maker管理工科具,能够转移相关的代码(controller,entity,command,doctrine等)

进入.env文件配置数据库连接

应用workbench做模型设计,正向生成数据库文件

数据库使用,console命令含义。接下去必要把数据库文件反向生成大家的entity

在档次目录下新建一个文书夹entitymaker,成立1个空bundle,bundle推荐在src下新建文件夹存放

php bin/console doctrine:mapping:import –force CreateEntityBundle xml
在脚下bundle下的resource中生成元数据文件

php bin/console doctrine:mapping:convert annotation ./src
官网推荐使用那一个命令生成对应的entity文件,不过相呼应的getter,setter方法并从未生成

行使phpstorm generategettersetter成效生成getter,setter方法

继续如若要求创新数据库结构,提出不用平昔改动数据库表,修改entity,然后正向修改到数据库,依次执行下方三个指令

php bin/console doctrine:migrations:diff

php bin/console doctrine:migrations:migrate

大家来做一个例证:

<h3>cache</h3>
cache:clear 清除缓存
cache:warmup Warms up3个空的缓存

                                    
bf88必发唯一官网 1

数据库操作+validation+security+eventsubscriber

1.开立两张表:section,article

bf88必发唯一官网 2

bf88必发唯一官网 3

<h3>config</h3>
config:debug 将近期安插扩大
config:dump-reference 将暗中同意配置扩充

        生成元数据文件后,您能够通过执行以下命令让Doctrine营造相关的实体类。

3.Logger

2.生成.orm.xml文件

$ php app/console doctrine:mapping:import --force SiteHomeBundle xml

那么些命令行让Doctrine检查数据库并生成XML元数据文件到src/Site/HomeBundle/Resources/config/doctrine文件夹下。
新生成了五个文本:

Section.orm.xml

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="Site\HomeBundle\Entity\Section" table="section">
    <id name="id" type="integer" column="id">
      <generator strategy="IDENTITY"/>
    </id>
    <field name="name" type="string" column="name" length="20" nullable="false"/>
  </entity>
</doctrine-mapping>

Article.orm.xml

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="Site\HomeBundle\Entity\Article" table="article">
    <id name="id" type="integer" column="id">
      <generator strategy="IDENTITY"/>
    </id>
    <field name="title" type="string" column="title" length="20" nullable="false"/>
    <field name="content" type="text" column="content" nullable="false"/>
    <field name="author" type="string" column="author" length="10" nullable="false"/>
  </entity>
</doctrine-mapping>

 

<h3>container</h3>
container:debug 为应用程序显示当前劳动

         php bin/console doctrine:mapping:convert annotation
./src 。若此命令没有响应可以品味使用:php bin/console
doctrine:mapping:import AppBundle annotation

4.validation

3.生成实体Entity

元数据文件生成后,能够用上面包车型大巴通令来营造相关的实业Entity

1
2
$ php app/console doctrine:mapping:convert annotation ./src
$ php app/console doctrine:generate:entities SiteHomeBundle --no-backup

率先个指令生成annotation注释映射的实业Entity类;
其次个指令生成整个SiteHomeBundle下种种Entity类的get,set方法
唯独,假如您想选拔YAML或XML代替annotation映射注释,你只要求举行第③个指令。

假诺您想选取annotations,你能够在使用那多少个指令之后安全的删除.orm.xml文件。
现行反革命四个实体Entity就生成成功了。

在src/Site/HomeBundle/Entity文件夹下

Section.php

<?php

namespace Site\HomeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Section
 *
 * @ORM\Table(name="section")
 * @ORM\Entity
 */
class Section
{
    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=20, nullable=false)
     */
    private $name;

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * Set name
     *
     * @param string $name
     * @return Section
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }
}

Article.php

<?php

namespace Site\HomeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Article
 *
 * @ORM\Table(name="article")
 * @ORM\Entity
 */
class Article
{
    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=20, nullable=false)
     */
    private $title;

    /**
     * @var string
     *
     * @ORM\Column(name="content", type="text", nullable=false)
     */
    private $content;

    /**
     * @var string
     *
     * @ORM\Column(name="author", type="string", length=10, nullable=false)
     */
    private $author;

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * Set title
     *
     * @param string $title
     * @return Article
     */
    public function setTitle($title)
    {
        $this->title = $title;

        return $this;
    }

    /**
     * Get title
     *
     * @return string
     */
    public function getTitle()
    {
        return $this->title;
    }

    /**
     * Set content
     *
     * @param string $content
     * @return Article
     */
    public function setContent($content)
    {
        $this->content = $content;

        return $this;
    }

    /**
     * Get content
     *
     * @return string
     */
    public function getContent()
    {
        return $this->content;
    }

    /**
     * Set author
     *
     * @param string $author
     * @return Article
     */
    public function setAuthor($author)
    {
        $this->author = $author;

        return $this;
    }

    /**
     * Get author
     *
     * @return string
     */
    public function getAuthor()
    {
        return $this->author;
    }

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }
}

Doctrine将持有的表字段都更换为私家的阐明类属性。他还找到了表的主键,Doctrine强大在即便你的表之间有表关联模型,Doctrine生成的Entity类都能在诠释映射中显现出各Entity类之间的炫耀关系。

<h3>debug</h3>
debug:config 将近期布局的恢宏
debug:container 展现应用程序的此时此刻服务
debug:event-dispatcher 展现应用程序的布局监听器
debug:router 呈现应用程序的当下路线
debug:swiftmailer 展现应用程序的此时此刻邮件
debug:translation 展现消息音信的翻译
debug:twig 列表展现Twig的功用,过滤器,全局变量和测试

                           
bf88必发唯一官网 4

<h3>doctrine</h3>
doctrine:cache:clear-metadata 为3个实体管理器清除全体的元数据缓存。
doctrine:cache:clear-query 为二个实体管理器清除全部的询问缓存
doctrine:cache:clear-result 为三个实体管理器清除结果缓存
doctrine:database:create 成立多个已布局的数据库
doctrine:database:drop 删除三个已布署的数据库
doctrine:ensure-production-settings
确认在生育条件下Doctrine的配备是天经地义的
doctrine:generate:crud 基于Doctrine实体生成增删改查(CRUD)
doctrine:generate:entities 从您的映照新闻中生成实体类和艺术的票根
doctrine:generate:entity 生成Bundle中的新Doctrine实体
doctrine:generate:form 基于Doctrine实体生成三个表单类型类
doctrine:mapping:convert 在支撑的格式间转移映射音讯
doctrine:mapping:import 从已存在的数据库中程导弹入映射消息
doctrine:mapping:info 显示全部被映射实体的着力音信
doctrine:query:dql 直接从命令行中运转任何的DQL
doctrine:query:sql 直接从命令行中运转任何的SQL
bf88必发唯一官网,doctrine:schema:create 执行(或转储)生成数据库方案所需的SQL语句
doctrine:schema:drop 执行(或转储)删除数据库方案所需的SQL语句
doctrine:schema:update
执行(或转储)更新匹配当前映射元数据数据库方案所需的SQL语句

        新的实体类已转移如上海教室。

<h3>generate</h3>
generate:bundle 生成Bundle
generate:controller 生成3个控制器
generate:doctrine:crud 基于Doctrine实体生成CRUD
generate:doctrine:entities 从你的照耀音信中生成实体类和形式的存折
generate:doctrine:entity 在Bundle中生成叁个Doctrine的新实体
generate:doctrine:form 基于Doctrine实体生成3个表单类型类

        通过

<h3>init</h3>
init:acl 在数据库中安装ACL数据表

        php bin/console doctrine:generate:entities AppBundle
生成方法

<h3>orm</h3>
orm:convert:mapping 转换援助格式之间的投射音信

                          
bf88必发唯一官网 5 

<h3>router</h3>
router:debug 为应用程序展现当前路由
router:dump-apache 将全数路由转储为Apache重写规则

 

<h3>security</h3>
security:check 检查你的类型依赖项的安全难题

       实体已经转移了,那上面正是执行数据库操作的不二法门了,

<h3>server</h3>
server:run 运行PHP内置的Web服务器
server:start 在后台开始PHP内置的Web服务器
server:status 输出给定地址的停放Web服务器的情景
server:stop 从服务器的启航命令甘休PHP内置的Web服务器

        需要了解数据库操作方法的可以访问:http://symfony.com/doc/3.3/doctrine.html

</h3>swiftmailer</h3>
swiftmailer:debug 展现应用程序的此时此刻邮件
swiftmailer:email:send 简单的邮件发送
swiftmailer:spool:send 从池中发送电子邮件

 

<h3>translation</h3>
translation:debug 显示消息信息的翻译
translation:update 更新翻译文件

<h3>twig</h3>
twig:debug 列表呈现Twig的效率,过滤器,全局变量和测试
twig:lint lint贰个模板输出遇到的错误

<h3>yaml</h3>
yaml:lint lint四个文书输出遇到的不当

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图