Symfony 2 Doctrine 2 一对多关系不返回数据



过了一会儿,我又回到了教义上。我对教义和交响乐有一些问题,我完全想不通,为什么会这样。帮忙会很好。

我有两个实体:1. 类别:

/**
 * @var integer
 *
 * @ORMColumn(name="id", type="integer")
 * @ORMId
 * @ORMGeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORMOneToMany(targetEntity="Items", mappedBy="category")
 */
private $items;

public function __construct() 
{
    $this->items = new DoctrineCommonCollectionsArrayCollection();
}

/**
 * Get id
 *
 * @return integer 
 */
public function getId()
{
    return $this->id;
}
/**
 *
 * @param Items $items
 * @return Category
 */
public function addItem(Items $item)
{
    $this->items[] = $item;
    return $this;
}
/**
 *
 * @param Items $item
 */
public function removeItem(Items $item)
{
    $this->items->removeElement($item);
}
/**
 * @return Items
 */
public function getItems()
{
    return $this->items;
}

其次是:物品

  /**
  * @var integer
  *
  * @ORMColumn(name="id", type="integer")
  * @ORMId
  * @ORMGeneratedValue(strategy="AUTO")
  */
 private $id;
 /**
 * @var integer
 *
 * @ORMManyToOne(targetEntity="Category", inversedBy="items")
 * @ORMJoinColumn(name="category_id", referencedColumnName="id")
 */
 private $category;

 /**
 * Get id
 *
 * @return integer 
 */
 public function getId()
 {
    return $this->id;
 }
 /**
 * Set category
 *
 * @param Category $category
 * @return Items
 */
 public function setCategory(Category $category = null)
 {
    $this->category = $category;
    return $this;
 }
 /**
  * Get category
  *
  * @return Category 
  */
 public function getCategory()
 {
    return $this->category;
 }

现在在控制器中,我只是尝试通过类别检索项目:

    $categories = $em->getRepository('Category')->findAll();  
    //just example 
    foreach ($categories as $category) {
        print_r($category->getItems());
    }

$category->getItems() 是否应该返回该类别的 Items ?还是我幻想它应该起作用?请指教。

它目前返回 null,但不会返回错误,尽管数据库中有数据。

表结构为:

  CREATE TABLE `category` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8

 CREATE TABLE `items` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `category_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_category` (`category_id`),
 CONSTRAINT `fk_category` FOREIGN KEY (`category_id`) REFERENCES `Category` (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

谢谢

您需要

在添加项目时设置项目的类别,否则它将作为NULL而不是类别 ID 保存在数据库中。

/**
 *
 * @param Items $items
 * @return Category
 */
public function addItem(Items $item)
{
    $item->setCategory($this);
    $this->items[] = $item;
    return $this;
}

2年后。我也希望通过最新的Symfony和Doctrine以及$category->getItems()

我必须做的是,在您的情况下:

控制器:

$items = $em->getRepository('AppBundle:Items')->findByCategory($category);

出于某种原因,->getItems() 为空。

尝试:

DoctrineCommonUtilDebug::dump($category->getItems()); 

而不是

print_r($category->getItems());

当我尝试dump()功能时,由于某种原因它不会转储结果时,我遇到了同样的问题

相关内容

  • 没有找到相关文章

最新更新