FOSMessageBundle - 未正确生成实体

时间:2014-01-16 07:24:39

标签: php symfony

我正在使用FOSMessageBundle,我认为我很好地遵循了说明,但我似乎无法让数据库正常生成...

继承我的消息实体:

<?php

namespace Acme\Bundle\DemoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as JMS;
use FOS\MessageBundle\Entity\Message as BaseMessage;
use FOS\MessageBundle\Model\ParticipantInterface;

/**
 * Message
 *
 * @ORM\Entity()
 * @JMS\ExclusionPolicy("All")
 */
class Message extends BaseMessage implements EntityInterface
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     * @JMS\Groups({"list", "default"})
     * @JMS\Expose()
     */
    protected $id;

    /**
     * @var Thread
     *
     * @ORM\ManyToOne(targetEntity="Thread", inversedBy="messages", cascade={"persist"})
     * @ORM\JoinColumn(name="thread_id")
     * @JMS\Groups({"default"})
     */
    protected $thread;

    /**
     * @ORM\ManyToOne(targetEntity="User")
     * @var ParticipantInterface
     */
    protected $sender;

    /**
     * @ORM\OneToMany(targetEntity="MessageMetadata", mappedBy="message", cascade={"all"})
     * @var MessageMetadata
     */
    protected $metadata;
}

我的config.yml

fos_message:
    db_driver: orm
    thread_class: Acme\Bundle\DemoBundle\Entity\Thread
    message_class: Acme\Bundle\DemoBundle\Entity\Message

问题是,我的表格最终只有idthread_idsender_id。它遗漏了其余的田地。

我缺少什么!

4 个答案:

答案 0 :(得分:0)

检查是否所有类都已正确映射:

php app/console doctrine:mapping:info

如果没有,你必须将消息元数据发送到配置文件

message_class: Acme\Bundle\DemoBundle\Entity\Message

答案 1 :(得分:0)

我不确定,但在您的情况下,您似乎对此实体有两种不同的配置 - 您的注释和FOSCommentBundle中的xml

请将您的配置更改为XML格式,例如https://github.com/FriendsOfSymfony/FOSMessageBundle/blob/master/Resources/config/doctrine/Message.orm.xml,然后再次检查。

问候,

答案 2 :(得分:0)

Merk,该项目的贡献者之一指出我在实体经理下设置auto_mappingtrue

一旦我设定了这个,就解决了我的问题!

答案 3 :(得分:0)

对我来说,自动映射功能不起作用,我收到了消息

“ doctrine.orm”下无法识别的选项“ auto_mapping”

我通过添加FOSMessageBundle来解决此问题:

orm:

    auto_generate_proxy_classes: "%kernel.debug%"
    default_entity_manager: default
    entity_managers:
        default:
            naming_strategy: doctrine.orm.naming_strategy.underscore
            connection: default
            second_level_cache:
                enabled: true
            mappings:
                AppBundle: ~
                UserBundle: ~
                FOSMessageBundle: ~