Laravel中基于实体的模式更新

时间:2016-09-24 02:22:09

标签: php mysql database laravel symfony

我目前正在尝试习惯使用Symfony体验的Laravel框架。现在一切看起来都很好。但是,Laravel中有一件事我不知道,或者我真的找不到怎么做。

在Symfony中,可以选择创建如下所示的实体:

// 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;
}

创建此文件后,可以简单地运行php app/console schema:doctrine:update --force来更新,例如MySQL数据库。

现在我已经读过Laravel正在使用Eloquent,模型和迁移来相应地更新数据库。但是,我想知道是否有类似的方法来更新我的数据库作为Symfony中使用的方法。因此,当我运行命令时,它会根据我创建的实体自动更新我的数据库。

这有可能吗?

1 个答案:

答案 0 :(得分:1)

您所要求的内容本身并不存在。

但是,存在一个很棒的软件包来提供您正在寻找的annotation mapping。当然,这远不止于此,实际上几乎可以为您提供所有重要的缺失部分。

You can find the package here

You can find the documentation here

以下是使用Laravel中Doctrine的Meta Mapping的示例:

<?php

use Doctrine\ORM\Mapping AS ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class Article
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @ORM\Column(type="string")
     */
    protected $title;

    public function getId()
    {
        return $this->id;
    }

    public function getTitle()
    {
        return $this->title;
    }

    public function setTitle($title)
    {
        $this->title = $title;
    }
}