天道酬勤,学无止境

many-to-many

需要另一个特定模型的多对多关系(Many-to-Many-to-Many relationship with need for another specific model)

问题 我通过供应模型和来源模型在Supermarket 、 Product和Brand之间建立了多对多关系。 我还想存储我在超市中拥有的特定产品品牌组合。 我想到了另一种模型(我称它为Specific_Combination ,我将在其中存储:supermarket_id 、 :product_id和:brand_id 。 class Supermarket < ActiveRecord::Base has_many :supplies has_many :products, :through => :supplies end class Supply < ActiveRecord::Base belongs_to :product belongs_to :supermarket end class Product < ActiveRecord::Base has_many :supplies has_many :supermarkets, :through => :supplies has_many :origins has_many :brands, :through => :origins end class Origin < ActiveRecord::Base belongs_to :products belongs_to :brands end class Brand

2021-12-09 02:38:35    分类:技术分享    ruby-on-rails   database-design   activerecord   many-to-many

是否可以使用实体框架直接引用多对多表,代码优先(Is it possible to directly reference a many-to-many table using entity framework, code first)

问题 我正在使用实体框架并建模多对多关系。 我使用 fluent API 创建了两个实体之间的关系(假设用户和组): this.HasMany(t => t.Users) .WithMany(t => t.Groups) .Map( m => { m.ToTable("GroupMembers"); m.MapLeftKey("Group_Id"); m.MapRightKey("User_Id"); }); 这很好用,但我也希望能够直接引用 GroupMembers 表。 要做到这一点,我有类似的东西: [Table("GroupMembers")] public class GroupMember { #region Properties /// <summary> /// Gets or sets the group. /// </summary> public virtual Group Group { get; set; } /// <summary> /// Gets or sets the Id of rht group. /// </summary> [Key] [Column("Group_Id", Order = 1)] public int GroupId { get; set; } /// <summary> /// Gets or sets the

2021-12-08 19:21:13    分类:技术分享    entity-framework-4.1   ef-code-first   many-to-many

多对多表上的休眠批量删除(Hibernate batch delete on many-to-many table)

问题 另一个多对多 Hibernate 问题。 我有最简单的多对多映射如下: @Entity public class Strategy implements Serializable { @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "STRATEGY_TO_GROUP", joinColumns = {@JoinColumn(name="STRATEGY_ID")}, inverseJoinColumns = {@JoinColumn(name = "STRATEGY_GROUP_ID")}) private Set<StrategyGroup> groups; ... } 反面的关系如下: @Entity public class StrategyGroup implements Serializable { @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "STRATEGY_TO_GROUP", joinColumns = {@JoinColumn(name="STRATEGY_GROUP_ID")}, inverseJoinColumns = {@JoinColumn(name = "STRATEGY_ID")}) private Set

2021-12-08 18:07:30    分类:技术分享    hibernate   many-to-many

删除多对多表中的记录(Deleting record in many-to-many table)

问题 我正在关注 Symfony 2 书的安全章节。 有一个包含表USERS和GROUPS的示例。 USERS和GROUPS之间存在多对多关系,这会在数据库中创建一个名为USERGROUPS的表。 我想要的是从USERGROUPS删除一条记录,例如: DELETE from USERGROUPS WHERE user_id = 1 and group_id = 1 我不知道该怎么做,因为我没有USERGROUPS.php表文件。 例如,使用 DQL,我希望能够做到这一点: $em = $this->getDoctrine()->getEntityManager(); $query = $em->createQuery( 'DELETE FROM AcmeStoreBundle:UserGroups ug WHERE ug.user_id = :user and ug.group_id = :group' )->setParameter(array('user' => $userid, 'group' => $groupid)); 我希望你明白。 那么,如何从该表中删除? 回答1 Doctrine 将数据视为对象,而不是表行。 因此,在 Doctrine 术语中,有 Group 对象(其中包含 Group 的用户)和 User 对象(每个对象都有一个存储用户所在组的属性)。 但是没有

2021-12-08 16:45:24    分类:技术分享    doctrine   symfony   many-to-many   dql

插入到 Many2many Odoo(前 OpenERP)(Insert into Many2many Odoo (former OpenERP))

问题 我正在尝试将值插入到 Odoo(以前的 OpenERP)中的Many2many或One2many关系表字段中。 你知道如何做到这一点吗? 回答1 这是股票模块的一个例子: invoice_line_id = invoice_line_obj.create(cursor, user, { 'name': name, 'origin': origin, 'invoice_id': invoice_id, 'uos_id': uos_id, 'product_id': move_line.product_id.id, 'account_id': account_id, 'price_unit': price_unit, 'discount': discount, 'quantity': move_line.product_uos_qty or move_line.product_qty, 'invoice_line_tax_id': [(6, 0, tax_ids)], 'account_analytic_id': account_analytic_id, }, context=context) self._invoice_line_hook(cursor, user, move_line, invoice_line_id) invoice_line_tax_id字段是多对多关系,

2021-12-08 15:10:03    分类:技术分享    insert   many-to-many   odoo

Rails:如何对多对多关系进行排序(Rails: How to sort many-to-many relation)

问题 我在模型用户和图片之间存在多对多关系。 它们由称为 Picturization 的连接表链接。 如果我获得单个图片的用户列表,即picture.users -> 我如何确保获得的结果是通过创建Picturization 行(即图片与用户关联的顺序)进行排序的。 如果我想按修改顺序获得它,这将如何改变? 谢谢! 编辑也许像 picture.users.where(:order => "created_at") 但是这个 created_at 指的是图片中的 created_at 回答1 在图片化表中有一个类似于序列的附加列,并将排序顺序定义为您的图片化中的默认范围 default_scope :order => 'sequence ASC' 如果您想要基于 modified_at 的默认排序顺序,请使用以下默认范围 default_scope :order => 'modified_at DESC' 回答2 您可以在 order 方法/子句中指定表名: picture.users.order("picturizations.created_at DESC") 回答3 好吧,就我而言,我需要按中间表中名为 weight 的列对多对多关系进行排序。 经过数小时的尝试,我找到了两种对多对多关系进行排序的解决方案。 解决方案 1:以 Rails 方式 picture.users

2021-12-08 13:46:59    分类:技术分享    ruby-on-rails   sorting   many-to-many

JPA ManyToMany 在用户和组的情况下?(JPA ManyToMany in case of users and groups?)

问题 同样的问题在这里,但它没有帮助我 我有三张桌子和多对多的连接。 在我的 JSF 应用程序中,我试图添加用户。 在我的组表中有三个不同的组:管理员、客户和用户。 我做了什么: 向 jsf-form 用户插入数据后点击保存。 名为 usersController 的 ManagedBean 从 groupsController 中获取组(customer-group) usersController ManagedBean 创建新用户并将其保存到 mySQL-db。 问题是 groups_has_user-table 是空的 和代码 用户: public class Users implements Serializable { @ManyToMany(mappedBy = "usersCollection") private Collection<Groups> groupsCollection; 团体: public class Groups implements Serializable { @JoinTable(name = "groups_has_user", joinColumns = { @JoinColumn(name = "groups_group_id", referencedColumnName = "group_id", nullable = false)

2021-12-08 12:30:45    分类:技术分享    jpa   many-to-many

如何阻止在节点 mysql 中为多对多关系插入重复记录?(how to block insert duplicate record in node mysql for many-to-many relation?)

问题 如何阻止在节点 MySQL 中为多对多关系插入重复记录? 我有两个外键:id_product 和 id_customer,我想用主键 id_relation 在它们之间创建关系。 目前,我可以多次保存相同的产品和客户组合,每次创建新的 id_relation。 有没有办法先检查这样的组合,然后再将其保存到 MySQL 数据库中,或者另一种方法来防止重复相同的记录? exports.create = (req, res) => { const relation = { id_product: req.body.id_product, id_customer: req.body.id_customer }; Relation.create(relation) .then(data => { res.send(data); }) .catch(err => { res.status(500).send({ message: err.message || "Error" }); }); } module.exports = function(sequelize, DataTypes) { return sequelize.define('relation', { id: { type: DataTypes.INTEGER(11), allowNull: false

2021-12-06 13:41:46    分类:技术分享    mysql   node.js   database   many-to-many

如何在实体框架设计器中建立多对多关系(How to set up a many-to-many relationship in Entity Framework designer thingy)

问题 我是一名 NHibernate 开发人员,试图在一个业余项目中尝试使用实体框架。 我习惯于使用 Fluent NHibernate 在代码中指定映射数据。 请原谅 Microsoft 认为不应允许开发人员编写代码的信念,我正在尝试使用实体框架的可视化设计器表面(通过在 Visual Studio 中打开 .edmx 文件获得)创建我的映射。 我不知道如何建立多对多关系! 我已经从数据库中“更新了模型”,但是我得到了两个一对多关系,它与对应于联结表的新实体(它只包含外键和它自己的主键)。 到目前为止,通过单击实体和关系等来解决这个问题的所有尝试都失败了。 谁能给我一个指针? 回答1 您的连接表必须是 MS 所谓的“纯连接表”——它必须只包含两个外键,而不能包含其他列。 在您的情况下,这意味着您必须删除主键列。 回答2 当您将关联添加到模型时,您选择两个表中的每一个,并在关系的两侧选择“许多”。 当这生成数据库脚本时,将为您创建一个只有两个键的连接表。 顺便说一句:如果您不喜欢使用模型优先,而是希望为实体框架进行代码研究“代码优先”开发。 如果您愿意,也可以执行数据库优先。

2021-12-05 18:47:22    分类:技术分享    entity-framework-4   many-to-many

如何先加载与实体框架代码的多对多关系?(How to eagerly load a many to many relationship with the entity framework code first?)

问题 为了清楚起见,我将给出我能想到的最基本的例子。 假设我有以下形式的两个实体: public class Student { public int Id {get;set} public string FullName {get;set;} public virtual ICollection<Course> Courses {get;set;} } public class Courses { public int Id {get;set;} public string FullName {get;set;} public virtual ICollection<Student> Students {get;set;} } 这两个实体映射到三个表,第三个是用于连接的表。 当我这样查询学生时 var allStudents = context.Students; 然后遍历结果以显示学生及其课程的列表,如下所示 foreach (var student in allStudents) { display(student.FullName); foreach (var course in student.Courses) { display(course.FullName); } } 我为第一个查询返回的每个学生得到一个课程查询。

2021-12-05 07:08:47    分类:技术分享    database   entity-framework   many-to-many   ef-code-first   eager-loading