在我的Symfony2应用程序中,我应该有一个产品,它应该有多个图像,但只有一个应该是主图像,它将在一个页面上标识20个或更多的产品。当用户打开特定产品时,将显示其余图像,并显示有关该产品的所有产品详细信息,包括其余图像。基本上大多数产品站点是如何工作的。
我将其映射为:
/**
* @ORM\Entity()
* @ORM\Table(name="product")
* @ORM\HasLifecycleCallbacks()
*/
class Product
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $title;
/**
* @ORM\ManyToMany(targetEntity="Productimage")
* @ORM\JoinTable(name="productimage_map",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="image_id", referencedColumnName="id")}
* )
*/
protected $images;
public function __construct()
{
$this->images = new \Doctrine\Common\Collections\ArrayCollection();
}
}产品图片实体:
/**
* @ORM\Entity(repositoryClass="Webmuch\ShopBundle\Repository\ProductimageRepository")
* @ORM\Table(name="productimage")
* @ORM\HasLifecycleCallbacks()
*/
class Productimage
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*/
protected $imagePath;
/**
* @ORM\Column(type="datetime")
*/
protected $created;
/**
* @ORM\Column(type="boolean")
*/
protected $mainImage;
}它工作得很好,但是当我创建一个用于创建新项的表单时,它显示了Itemimage表中所有行的多项选择。如何创建一个系统,在该系统中,我可以只从项目创建表单本身上传图像,而不从包含数千个图像的多选表单元素中选择要与项目映射的图像。
我还附上了一张我试图解释的图片。目前只有2张图片,但它们将在仅有的几百个产品中成为数千张。
我希望我已经成功地解释了问题所在。这让我很困惑。请帮我弄一下这个。
此外,多个选择元素显示ids,我希望它们是标题。你知道我怎么也能做到吗?
谢谢!我很感谢你的帮助。

发布于 2012-01-15 01:05:46
您应该添加一个直接引用图像表的mainImage属性,而不是现在使用的布尔标志。
您可以通过为表单类型提供'property' => 'title'选项来指定要显示的每个图像的标题。
https://stackoverflow.com/questions/8860609
复制相似问题