Skip to content

基于 Symfony3.4

概念理解: bundle entity doctrine

流程:

  1. 在配置文件配置数据库信息

  2. 命令生成bundle文件

  3. 命令生成bundle的entity文件

  4. 写CURD

  5. 配置数据库 /app/config/parameters.yml

image.png

为保证数据库字符集 app/config/config.yml

image.png

  1. 执行 php bin/console doctrine:database:create 数据库就创建好啦~

  2. 创建一个 Entity 类 进到命令交互终端 php bin/console doctrine:generate:entity

image.png

首先让你输入Entity名称,输入首字母会有自动提示哦。 entity 有点类似模型, 表名 setting 字段 field, data,

不想添加新字段的话直接在 press <return> 处回车。

多了两个文件 /src/Finley/BlogBundle/Entity/Setting.php

<?php

namespace Finley\BlogBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Setting
 *
 * @ORM\Table(name="setting")
 * @ORM\Entity(repositoryClass="Finley\BlogBundle\Repository\SettingRepository")
 */
class Setting
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="field", type="string", length=255, unique=true)
     */
    private $field;

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


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

    /**
     * Set field
     *
     * @param string $field
     *
     * @return Setting
     */
    public function setField($field)
    {
        $this->field = $field;

        return $this;
    }

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

    /**
     * Set data
     *
     * @param string $data
     *
     * @return Setting
     */
    public function setData($data)
    {
        $this->data = $data;

        return $this;
    }

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

/src/Finley/BlogBundle/Repository/SettingRepository.php

<?php

namespace Finley\BlogBundle\Repository;

/**
 * SettingRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class SettingRepository extends \Doctrine\ORM\EntityRepository
{
}
  1. 根据 entity 定义文件生成真正的表, 可以先用下面的命令打印出SQL,不真正执行 php bin/console doctrine:schema:create --dump-sql。 然后 php bin/console doctrine:schema:create

官方建议如果后期要修改表结构,不建议直接修改entity文件,通过新建迁移文件的方式

问题:

  1. entity 加入 created_at, updated_at
  2. 定义 relation

参考: https://symfony.com/doc/3.4/doctrine.htmlhttps://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html