Doctrine 无法产生关系

标签 doctrine symfony

注意:在提问之前我确实做了一些搜索。

这是我的问题:

我有两个实体:一个是Channel,另一个是Plugin,一个Channel可以有很多插件,下面是代码,

channel :

use Gedmo\Mapping\Annotation as Gedmo; // gedmo annotations

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Mikay\MikiBundle\Entity\Channel
 *
 * @ORM\Table(name="channels")
 * @ORM\Entity(repositoryClass="Mikay\MikiBundle\Entity\ChannelRepository")
 */
<?php
class Channel
{
  /**     
   * @ORM\OneToMany(targetEntity="Plugin", mappedBy="channel")
   */
  private $plugins;            

插件:

 use Doctrine\ORM\Mapping as ORM;

/**
 * Mikay\MikiBundle\Entity\Plugin
 *
 * @ORM\Table(name="plugins")
 * @ORM\Entity(repositoryClass="Mikay\MikiBundle\Entity\PluginRepository")
 */
<?php
class Plugin
{
  /**
   * @ORM\ManyToOne(targetEntity="Channel", inversedBy="plugins")
   * @ORM\JoinColumn(name="channel_id", referencedColumnName="id")
   */
  private $channel;

我使用此命令来更新数据库,但它从未创建两个表之间的关系。

php app/console doctrine:schema:update --force

那么,问题出在哪里,可能是一些配置错误吗?

编辑:

注意: 不要添加

@ORM\Column(name="channel_id", type="integer")

插件实体中的这种注释,否则它不会生成两个表之间的关系,这就是我的问题的原因。

最佳答案

你需要告诉 Doctrine 这些是实体。

/**
 * @ORM\Entity()
 */
class Channel
{

这是验证该 Doctrine 可以看到您的实体的快速方法:

php app/console doctrine:mapping:info

关于 Doctrine 无法产生关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469579/

相关文章:

php - 使用 Symfony 框架的生产服务器上的用户登录失败(由于...无法处理身份验证请求)

javascript - symfony 中的 Jquery 验证和本地化

php - Doctrine One To Many 级联持续存在,外键为空

php - Doctrine 1.0.7 和 Doctrine 2.0 之间的区别?

javascript - AngularJS PUT 与 Symfony2 PUT 方法。更新不起作用

php - Symfony4 错误加载类自定义文件夹 "Expected to find class... but it was not found"

forms - Symfony2 : Sort/Order a translated entity form field?

php - 从父项中删除子项集合

symfony - 带有 Doctrine ORM 的 Silex 身份验证系统

php - 不在数据库中的表上的外键,使用 ORM