我目前正在尝试习惯使用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中使用的方法。因此,当我运行命令时,它会根据我创建的实体自动更新我的数据库。
这有可能吗?
答案 0 :(得分:1)
您所要求的内容本身并不存在。
但是,存在一个很棒的软件包来提供您正在寻找的annotation mapping
。当然,这远不止于此,实际上几乎可以为您提供所有重要的缺失部分。
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;
}
}