many-to-many 相关问题

类型A和B的实体之间的一种关系类型,它将类型B的实体列表与类型A的实体相关联,反之亦然。类型A和B可以是相同类型。

gorm v2 外键上的多对多错误

我发现在以下情况下很难使用 Gorm 定义多对多关系 功能(feature_id、名称、slug) 操作(操作 ID、名称、slug) 特征操作(特征 ID,

回答 1 投票 0

如何在多对多表中添加列(Django)

从Django Book的示例中,我明白如果我创建模型如下: 从 xxx 导入 B A 类(模型.模型): b = 多对多字段(B) Django 将创建一个新表(A_B)超出...

回答 4 投票 0

如何编写一个 SQLAlchemy 查询来返回图中节点的所有后代?

我正在开发一个应用程序,其中我的数据库对象通常有多个父级和多个子级,并且希望创建一个 SQLAlchemy 查询来返回对象的所有后代。

回答 1 投票 0

如何防止 Django 管理中的 FK / MTM 字段的自我(递归)选择

给定一个具有ForeignKeyField(FKF)或ManyToManyField(MTMF)字段的模型,其中外键为“self”,我如何防止Django管理(admin)中的自我(递归)选择。 简而言之,它...

回答 4 投票 0

Zend Framework 2 Doctrine 2 多对多实体关系问题

我有以下表格:电影、类别、电影_类别和实体: 电影.php 我有以下表格:电影、类别、电影_类别和实体: 电影.php <?php namespace Admin\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="films") */ class Film{ /** * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") * @ORM\Column(type="integer") * @ORM\Column(length=11) */ private $id; /** * @ORM\Column(type="string") */ private $name; /* .... */ /** * @ORM\ManyToMany(targetEntity="Category") * @ORM\JoinTable(name="films_categories", * joinColumns={@ORM\JoinColumn(name="film_id", referencedColumnName = "id")}, * inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}) */ private $categories; public function __construct(){ $this->categories = new ArrayCollection(); } public function getCategoriesNames(){ $names = array(); foreach($this->categories as $category){ $names[] = $category->getName(); } return $names; } public function getId(){ return $this->id; } public function setId($id){ $this->id = $id; } /* ... */ /** * @return Collection */ public function getCategories(){ return $this->categories; } public function addCategories(Collection $categories){ foreach($categories as $category){ $this->categories->add($category); } } public function removeCategories(Collection $categories){ foreach($categories as $category){ $this->categories->removeElement($category); } } } 类别.php <?php namespace Admin\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="categories") */ class Category { /** * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") * @ORM\Column(type="integer") */ private $id; /* ... */ public function getId(){ return $this->id; } public function setId($id){ $this->id = $id; } /* ... */ } 我想要做的是创建一个表单和添加新电影并为其分配类别的操作。这是我使用的表格: FilmFieldset.php <?php namespace Admin\Form; use Zend\Form\Fieldset; use Zend\InputFilter\InputFilterProviderInterface; use DoctrineORMModule\Stdlib\Hydrator\DoctrineEntity; use Admin\Entity\Film; class FilmFieldset extends Fieldset implements InputFilterProviderInterface{ protected $entityManager; public function __construct($em){ parent::__construct('film'); $this->entityManager= $em; $this->setHydrator(new DoctrineEntity($em,'Admin\Entity\Film')) ->setObject(new Film()); #$this->setAttribute('method','post'); #$this->setAttribute('class','standardForm'); $this->add(array( 'name' => 'id', 'type' => 'hidden' )); /* ... */ $this->add( array( 'type' => 'DoctrineModule\Form\Element\ObjectSelect', 'name' => 'categories', 'attributes' => array( 'multiple' => 'multiple', ), 'options' => array( 'object_manager' => $em, 'target_class' => 'Admin\Entity\Category', 'property' => 'name', 'label' => 'Categories: ', 'disable_inarray_validator' => true ), ) ); } public function getInputFilterSpecification(){ return array( /* .... */ 'categories' => array( 'required' => true, ), ); } } FilmForm.php <?php namespace Admin\Form; use Zend\Form\Form; use Zend\Stdlib\Hydrator\ClassMethods; use Admin\Entity\Film; use Zend\InputFilter\InputFilter; use DoctrineModule\Stdlib\Hydrator\DoctrineObject as DoctrineHydrator; class FilmForm extends Form{ public function __construct($em){ parent::__construct('filmForm'); $this->setAttribute('method','post') ->setAttribute('class','standardForm') ->setHydrator(new DoctrineHydrator($em,'\Admin\Entity\Film')) ->setInputFilter(new InputFilter()); /* I register the fieldset through a service and not directly here */ // $this->add(array( // 'type' => new FilmFieldset($em), // 'options' => array( // 'user_as_base_fieldset' => true // ) // )); $this->add(array( 'name' => 'security', 'type' => 'Zend\Form\Element\Csrf' )); $this->add(array( 'name' => 'submit', 'type' => 'submit', )); $this->setValidationGroup(array( 'security', 'film' => array( 'categories', ) )); } } 添加操作: public function addAction() { $em = $this->getEntityManager(); $form = $this->getForm(); $film = new Film(); $form->bind($film); if($request->isPost()){ $post = array_merge_recursive( $request->getPost()->toArray(), $request->getFiles()->toArray() ); $form->setData($post); if($form->isValid()){ $categories = array(); foreach($post['film']['categories'] as $categoryId){ $categories[] = $em->getRepository('Admin\Entity\Category')->find($categoryId); } $film->addCategories($categories); $em->persist($film); $em->flush(); }else{ // the form is not valid } } 结果是各种错误和 ORMExcption,并显示消息“在关联 Admin\Entity\Film#categories 上找到类型实体,但期望 Admin\Entity\Category” 请帮帮我,我真的被这个吓坏了!谢谢你:) 据我所知,您的实体正在接收类似的东西Admin\Entity\Film#categories,在这一部分中,类别具有一定的价值。您的实体需要一个类型为 Admin\Entity\Film#categories 的对象。 要克服这个问题,你必须创建一个 public function SetCategory(Admin\Entity\Category Category) { $this->categories(or category or w/e your variable name is)= Category; } public function getCategory() { return $this->categories(or category or w/e your variable name is); } 然后在你的操作中,你必须将Category的对象传递给Film实体,就像这样 $Film->SetCategory($categoryObj); 当然你必须根据你的部分设置你的业务逻辑,但是这个错误应该被这个方法删除。 您需要为目标实体定义 FQCN。 改变: * @ORM\ManyToMany(targetEntity="Category") 至: * @ORM\ManyToMany(targetEntity="Admin\Entity\Category") 这与水合作用和延迟加载有关。 我不是这方面的专家,但是 #categories 是一个代理对象,当您要保存它时,它会抱怨,因为它需要是一个实际的集合,而不是集合的代理对象。 如果您采用了 noobie-php 的方法,您将在主对象上重新附加新的类别对象,因此它们不再是代理。 这令人沮丧,因为 Doctrine 本来应该避免很多麻烦,但在很多情况下它实际上并没有达到您自然期望的效果。 我前段时间发现了一个关于此问题的错误票,但现在找不到它 - 如果我能找到它,我会将其添加到此。

回答 3 投票 0

在不知道关联数据是否存在的情况下插入与@ManyToMany hibernate的关联

我有两个实体,内容和数据,通过关系@ManyToMany 连接。 内容是关系的所有者,所以我的代码如下所示: @实体 @Table(名称=“内容”) 公共...

回答 1 投票 0

Django Composite 主键与外键的最佳解决方案

我想在 Django SQLite DB(ER 图)中满足这种关系,我尝试使用 unique_together 和 models.UniqueConstraint 解决方案,我已经看到了建议。 myapp/models.py c...

回答 2 投票 0

Hibernate @ManyToMany 映射问题:Join Table On 子句中的未知列(hibernate 忽略 @JoinTable 和 @JoinColumn 注释)

我在使用 Hibernate 的 Spring Boot 应用程序中遇到 @ManyToMany 映射问题。当 Hibernate 尝试执行涉及 Set 的连接表的查询时,就会出现问题<...

回答 1 投票 0

是一对多还是多对多关系?

我想知道以下是一对多还是多对多关系 用户和服务表定义如下: 用户服务 +---+---------...

回答 1 投票 0

.NET EF Core:如何在具有有效负载的连接表的多对多关系中正确插入和更新模型?

我正在使用 EF Core for ORM 编写一个具有分层架构的 .NET CRUD 应用程序。我有两个模型(玩家和团队)存储在数据库中,它们之间有一个连接表(团队中的玩家)。 那个...

回答 1 投票 0

models.ManyToManyField 必要性

我不明白,如果使用中间模型,添加 models.ManyToManyField 会有什么好处?有必要吗? 我想在我的项目中使用基本(非自定义)用户模型。我应该重新定义吗

回答 1 投票 0

related_name 有何用途?

related_name 参数对 ManyToManyField 和foreignKey 字段有什么用?例如,给定以下代码, related_name='maps' 的效果是什么? 类映射(db.Model): 我...

回答 6 投票 0

有没有办法将日历查找表和 24 小时时间查找表与 PowerBI 中超过 1 列的 2 个不同表相关联?

我有 2 个表,遭遇表和过程表,它们都有 2 列包含日期数据类型和 2 列包含时间数据类型。我创建了一个日历查找和一个时间 l...

回答 1 投票 0

Laravel 尝试从数据透视表获取数据

我正在尝试从数据透视表中获取链接到我的模型的数据(多对多关系)。 我让客户与部门建立多对多的关系。 迁移: 架构::创建('

回答 1 投票 0

ASP.NET Core 2.2 在多对多插入时返回“NotSupportedException:集合具有固定大小”

当我尝试插入 ASP.NET Core 2.2 中多对多的链接表时,出现“NotSupportedException:集合具有固定大小”。 我可以在 SQL Server 中手动插入值! 我的实体...

回答 4 投票 0

yii2 添加 '0=1' 来查询多对多关系

我有一个项目,用户必须像朋友一样相互联系。所以我决定通过表“连接”来连接它们。看来是权利了但当我试图寻找朋友时

回答 1 投票 0

Node.JS Typescript TypeORM ManyToMany `save` 覆盖以前的关系而不是添加新的关系

我有以下打字稿 TypeORM 模型: @实体() 导出类 Student 扩展 EntityBase { @Column({ 长度: 256 }) 公共名字:字符串 @Column({ 长度: 256 }) 公开

回答 1 投票 0

Node.JS Typescript TypeORM ManyToMany 关系添加关系并更新实体

我有以下打字稿 TypeORM 模型: @实体() 导出类 Teacher 扩展 EntityBase { @Column({ 长度: 256 }) 公共名字:字符串 @Column({ 长度: 256 }) 公开

回答 1 投票 0

Node.JS Typescript TypeORM ManyToMany 与空结果集的关系

我有以下打字稿 TypeORM 模型: @实体() 导出类 Teacher 扩展 EntityBase { @Column({ 长度: 256 }) 公共名字:字符串 @Column({ 长度: 256 }) 公开

回答 1 投票 0

Django 模型 - 如何将多对多相关对象聚合到数组中?

所以我最近开始使用 Django,我遇到了书籍和作者之间多对多关系的情况 - 作为一个简单的例子 - 一本书可以有多个作者。 类书(模型.模型):

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.