【问题标题】:Fixture DOCTRINE2夹具 DOCTRINE2
【发布时间】:2015-08-11 21:34:50
【问题描述】:

当我使用时:

php app/console doctrine:fixtures:load --fixtures=/var/www/Symfony/src/BISSAP/ForumBundle/DataFixtures/ORM**

我收到以下错误:

PHP 可捕获的致命错误:参数 1 传递给 BISSAP\ForumBundle\Entity\Forum::setCategory() 必须是 BISSAP\ForumBundle\Entity\Category,给定 null,调用 /var/www/Symfony/src/BISSAP/ForumBundle/DataFixtures/ORM/LoadForum.php 在第 40 行并定义在 /var/www/Symfony/src/BISSAP/ForumBundle/Entity/Forum.php 在第 184 行

我的灯具 - LoadForum.php:

<?php
namespace BISSAP\ForumBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use BISSAP\ForumBundle\Entity\Forum;
use BISSAP\ForumBundle\Entity\Category;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class LoadForum extends Controller implements FixtureInterface
{

 public function load(ObjectManager $manager)
 {
    $data=array(array('NAME','DESCRTIPTION','60',$manager->getRepository('BISSAPForumBundle:Category')->find('1')),
                array('NAME2','DESCRTIPTION2','60',$manager->getRepository('BISSAPForumBundle:Category')->find('2')));

    foreach ($data as $for) {
      $forum = new Forum();
      $forum->setName($for[0]);
      $forum->setDescription($for[1]);
      $forum->setOrdre($for[2]);
      $forum->setCategory($for[3]);

      $manager->persist($forum);
      }

    $manager->flush();
  }
}

【问题讨论】:

    标签: symfony fixture


    【解决方案1】:

    doctrine:fixtures:load 删除数据库中的所有数据并加载一组新的fixture

    我相信你的问题是

    $manager->getRepository('BISSAPForumBundle:Category')->find('1')
    

    返回空结果而不是 Category 对象

    看起来您要么在 Category 之前加载了 Forum 固定装置,要么您没有认为 DB 已被删除并且您没有 Category 的任何记录。

    对于案例 1,您应该更改固定装置的加载顺序 - 更改类别固定装置的函数“getOrder”并将返回的数字设置为低于论坛上的数字

    对于案例 2,您还应该为某些类别创建固定装置

    顺便说一句,您应该使用对对象的引用,而不是从存储库中获取,所以常见的方法是:

    1. 为类别夹具创建新引用

      $category = new \MyApp\CategoryBundle\Entity\Category();

      $category->setName();

      $this->addReference('MyApp\CategoryBundle\Entity\Category-1',$category);

    2. 调用创建的参考来填充论坛

      $forum->setCategory($this->getReference('MyApp\CategoryBundle\Entity\Category-1'));

    【讨论】:

    • 感谢 U Evgeniy Kuzmin,现在一切正常!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多