Symfony2-以表格形式显示一个属性,由另一个属性映射

卡米尔

因此,我正在开发用于处理库维护的应用程序。在我的数据库中,我有三个表:Book,Category和BookCategory。表,我有两个领域:的BookIDBOOKTITLE,在分类我有类别ID类别名称BookCategory的BookID和(图书(的BookID)的外键)类别ID(类别的外键(类别ID)我自动生成控制器和形式通过使用php app/console generate:doctrine:crud --entity=AppBundle:EntityName

关键是,当我尝试将新书添加到数据库时,我可以按类别ID(与图片相关)输入书籍的标题及其类别,但是我想使用类别名称(而不是类别ID)添加新书,尽管它仍然应该通过类别ID映射到BookCategory表。怎么做?它看起来如何,我希望它看起来如何

Book.php

<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
* Book
*
* @ORM\Table(name="book")
* @ORM\Entity
*/
class Book
{
/**
 * @var integer
 *
 * @ORM\Column(name="book_id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $bookId;

/**
 * @var string
 *
 * @ORM\Column(name="title", type="string", length=50, nullable=false)
 */
private $title;

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToMany(targetEntity="Category", inversedBy="bookId")
 * @ORM\JoinTable(name="book_category",
 *   joinColumns={
 *     @ORM\JoinColumn(name="book_id", referencedColumnName="book_id")
 *   },
 *   inverseJoinColumns={
 *     @ORM\JoinColumn(name="category_id", referencedColumnName="category_id")
 *   }
 * )
 */
private $categoryId;

/**
 * Constructor
 */
public function __construct()
{
    $this->categoryId = new \Doctrine\Common\Collections\ArrayCollection();
}


/**
 * Get bookId
 *
 * @return integer 
 */
public function getBookId()
{
    return $this->bookId;
}

/**
 * Set title
 *
 * @param string $title
 * @return Book
 */
public function setTitle($title)
{
    $this->title = $title;

    return $this;
}

/**
 * Get title
 *
 * @return string 
 */
public function getTitle()
{
    return $this->title;
}


/**
 * Add categoryId
 *
 * @param \AppBundle\Entity\Category $categoryId
 * @return Book
 */
public function addCategoryId(\AppBundle\Entity\Category $categoryId)
{
    $this->categoryId[] = $categoryId;

    return $this;
}

/**
 * Remove categoryId
 *
 * @param \AppBundle\Entity\Category $categoryId
 */
public function removeCategoryId(\AppBundle\Entity\Category $categoryId)
{
    $this->categoryId->removeElement($categoryId);
}

/**
 * Get categoryId
 *
 * @return \Doctrine\Common\Collections\Collection 
 */
public function getCategoryId()
{
    return $this->categoryId;
}

public function __toString()
{
    return (string)$this->bookId;
}

}

Category.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Category
 *
 * @ORM\Table(name="category")
 * @ORM\Entity
 */
class Category
{
/**
 * @var integer
 *
 * @ORM\Column(name="category_id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $categoryId;

/**
 * @var string
 *
 * @ORM\Column(name="category_name", type="string", length=50, nullable=false)
 */
private $categoryName;

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToMany(targetEntity="Book", mappedBy="categoryId")
 */
private $bookId;

/**
 * Constructor
 */
public function __construct()
{
    $this->bookId = new \Doctrine\Common\Collections\ArrayCollection();
}


/**
 * Get categoryId
 *
 * @return integer 
 */
public function getCategoryId()
{
    return $this->categoryId;
}

/**
 * Set categoryName
 *
 * @param string $categoryName
 * @return Category
 */
public function setCategoryName($categoryName)
{
    $this->categoryName = $categoryName;

    return $this;
}

/**
 * Get categoryName
 *
 * @return string 
 */
public function getCategoryName()
{
    return $this->categoryName;
}

/**
 * Add bookId
 *
 * @param \AppBundle\Entity\Book $bookId
 * @return Category
 */
public function addBookId(\AppBundle\Entity\Book $bookId)
{
    $this->bookId[] = $bookId;

    return $this;
}

/**
 * Remove bookId
 *
 * @param \AppBundle\Entity\Book $bookId
 */
public function removeBookId(\AppBundle\Entity\Book $bookId)
{
    $this->bookId->removeElement($bookId);
}

/**
 * Get bookId
 *
 * @return \Doctrine\Common\Collections\Collection 
 */
public function getBookId()
{
    return $this->bookId;
}

public function __toString()
{
    return (string)$this->categoryId;
}
}

BookType.php

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;


class BookType extends AbstractType
{
/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('title')
        ->add('categoryId')
    ;
}

/**
 * @param OptionsResolver $resolver
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\Book'
    ));
}
}
梅达德

这应该做到这一点:

$builder->add('categoryId', EntityType::class, array(
    'class' => 'AppBundle:Category',
    'choice_label' => 'categoryName',
    'expanded' => true,
));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony2获取另一个实体中一个实体的实体

来自分类Dev

与一个实体Symfony2共享同一OneToMany关系的两个属性

来自分类Dev

Symfony2:对一个实体属性使用两个表单字段?

来自分类Dev

Symfony2:从控制器中的另一个文件获取HTML

来自分类Dev

使用另一个symfony2项目作为供应商

来自分类Dev

在Symfony2上添加与另一个特定实体相关的新实体

来自分类Dev

Symfony2 FOSUserBundle自动关联到另一个实体

来自分类Dev

Symfony2从与另一个oneToMany相关的实体oneToMany获取值

来自分类Dev

从Symfony2中的表单检索另一个实体

来自分类Dev

来自另一个控制器的Symfony2呼叫控制器

来自分类Dev

Symfony2配置-另一个data.timezone错误

来自分类Dev

另一个实体的symfony2 php访问对象

来自分类Dev

调用Symfony2中另一个Bundle的函数

来自分类Dev

Symfony2 / Doctrine-如何从blog.tags属性中选择一个标签

来自分类Dev

symfony实体:在属性/ to_string方法中使用另一个实体属性

来自分类Dev

使用SEVERAL属性而不是validate.yml symfony2中的一个属性的唯一实体约束

来自分类Dev

Symfony2,重构,一个或多个flush()?

来自分类Dev

Symfony2创建一个帖子,调用ShowAction

来自分类Dev

Struts2-另一个属性内的属性标签

来自分类Dev

Symfony2形式的UnexpectedTypeException

来自分类Dev

symfony2数组的形式?

来自分类Dev

使用Symfony2和一个简单的表格上传文件

来自分类Dev

symfony2错误分支“扩展了另一个模板的模板无法拥有实体”

来自分类Dev

在symfony2中的另一个过滤器树枝中使用过滤器

来自分类Dev

在Symfony2中使用另一个捆绑软件中的公共资源

来自分类Dev

如何从存储库类Symfony2与另一个数据库连接

来自分类Dev

如何访问symfony2中另一个html.twig文件中的javascript变量?

来自分类Dev

2 img src,显示一个图像,另一个不显示

来自分类Dev

如何基于从Symfony2中的另一个列表中选择的值来从一个选择列表中获取值?

Related 相关文章

  1. 1

    Symfony2获取另一个实体中一个实体的实体

  2. 2

    与一个实体Symfony2共享同一OneToMany关系的两个属性

  3. 3

    Symfony2:对一个实体属性使用两个表单字段?

  4. 4

    Symfony2:从控制器中的另一个文件获取HTML

  5. 5

    使用另一个symfony2项目作为供应商

  6. 6

    在Symfony2上添加与另一个特定实体相关的新实体

  7. 7

    Symfony2 FOSUserBundle自动关联到另一个实体

  8. 8

    Symfony2从与另一个oneToMany相关的实体oneToMany获取值

  9. 9

    从Symfony2中的表单检索另一个实体

  10. 10

    来自另一个控制器的Symfony2呼叫控制器

  11. 11

    Symfony2配置-另一个data.timezone错误

  12. 12

    另一个实体的symfony2 php访问对象

  13. 13

    调用Symfony2中另一个Bundle的函数

  14. 14

    Symfony2 / Doctrine-如何从blog.tags属性中选择一个标签

  15. 15

    symfony实体:在属性/ to_string方法中使用另一个实体属性

  16. 16

    使用SEVERAL属性而不是validate.yml symfony2中的一个属性的唯一实体约束

  17. 17

    Symfony2,重构,一个或多个flush()?

  18. 18

    Symfony2创建一个帖子,调用ShowAction

  19. 19

    Struts2-另一个属性内的属性标签

  20. 20

    Symfony2形式的UnexpectedTypeException

  21. 21

    symfony2数组的形式?

  22. 22

    使用Symfony2和一个简单的表格上传文件

  23. 23

    symfony2错误分支“扩展了另一个模板的模板无法拥有实体”

  24. 24

    在symfony2中的另一个过滤器树枝中使用过滤器

  25. 25

    在Symfony2中使用另一个捆绑软件中的公共资源

  26. 26

    如何从存储库类Symfony2与另一个数据库连接

  27. 27

    如何访问symfony2中另一个html.twig文件中的javascript变量?

  28. 28

    2 img src,显示一个图像,另一个不显示

  29. 29

    如何基于从Symfony2中的另一个列表中选择的值来从一个选择列表中获取值?

热门标签

归档