Symfony2.1 сохраняет коллекцию ArrayCollection () в MongoDB через EmbedMany

Я пытаюсь сохранить некоторые данные MongoDB с Docrtrine (symfony2.1). Вот мои сущности:

// src/Acme/ReportsBundle/Entity/ReportCore.php
namespace Acme\ReportsBundle\Entity;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use Doctrine\Common\Collections\ArrayCollection;
/**
 * @MongoDB\Document(collection="registeredReports")
 */
class ReportCore {

/**
* @MongoDB\Id
*/
protected $id;

/**
* @MongoDB\String
*/
protected $title;

/**
* @MongoDB\String
*/
protected $description;

/**
* @MongoDB\String
*/
protected $reference;

/**
* @MongoDB\Date
*/
protected $created;

/**
* @MongoDB\Date
*/
protected $createdBy;

/**
* @MongoDB\EmbedMany(targetDocument="ReportFields")
*/
protected $fields = array();

public function __construct() {
    $this->fields = new ArrayCollection();
}
// Setters, getters
}

Вот встроенный документ:

// src/Acme/ReportsBundle/Entity/ReportFields.php
namespace Acme\ReportsBundle\Entity;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
 *  @MongoDB\EmbeddedDocument
 */
class ReportFields {
/**
 * @MongoDB\Id
 */
protected $id;

/**
 * @MongoDB\String
 */
protected $title;

/**
 * @MongoDB\String
 */
protected $description;

/**
 * @MongoDB\String
 */
protected $name;

/**
 * @MongoDB\String
 */
protected $type;

    //Setters-getters...
}

и вот контроллер:

// src/Acme/ReportsBundle/Controller/ReportsController.php
namespace Acme\ReportsBundle\Controller;
use Acme\ReportsBundle\Entity\ReportCore;
use Acme\ReportsBundle\Entity\ReportFields;
use Acme\ReportsBundle\Form\Type\ReportCoreType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class ReportsController extends Controller {
    public function newAction (Request $request) {
$report = new ReportCore();
$fields1 = new ReportFields();
$report->getFields()->add($fields1);
$form = $this->createForm(new ReportCoreType(), $report);
    if ( $request->isMethod('POST') ) {
    $form->bind($request);
    if ( $form->isValid() ) {
        $dm = $this->get('doctrine_mongodb')->getManager();
    $dm->persist($report);
    $dm->flush();
    }
}
return $this->render('AcmeReportsBundle:Report:new.html.twig', array(
            'form' => $form->createView()
        ));
}

Моя проблема - когда я пытаюсь сохранить данные в базе данных, я получаю

The class 'Acme\ReportsBundle\Entity\ReportCore' was not found in the chain configured namespaces FOS\UserBundle\Document

Поскольку я совершенно новичок в Symfony и Doctrine - я не могу понять, что это касается FOSUserBundle, и что я делаю неправильно.

2
nl ja de
Вы обновили схему базы данных? PHP app/console doctrine: schema: update --force;
добавлено автор Mick, источник
Я не думаю, что это так, работая с MongoDB, но я попробовал это сейчас - он говорит: «Ничего не обновлять - ваша база данных уже синхронизирована с текущими метаданными объекта». Ошибка, однако все еще есть ...
добавлено автор yarren, источник

1 ответы

Ваши MongoDb-Схемы должны быть в пространстве имен Document

пространство имен Acme \ ReportsBundle \ Document;

2
добавлено
да, спасибо, я это понял)
добавлено автор yarren, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MongoDB Russian
MongoDB Russian
1 086 участник(ов)

> db.stats() https://combot.org/chat/-1001035023078

symfony
symfony
1 045 участник(ов)

Сообщество Symfony, Symfony Components, Symfony Framework. Вакансии: https://t.me/symfony_careers Официальный slack: https://symfony.com/slack-invite

symfony
symfony
354 участник(ов)