标签: many-to-many

mysql n:m 关系:查找具有几个特定关系的行

我有两个 SQL 表,“产品”和“标签”。它们具有 n:m 关系,使用第三个表“product_tags”。

我想使用查询来查找具有多个特定标签的每个产品。例如,查找与标签 1、23 和 54 相关的所有产品。

有没有办法只用一个查询来做到这一点?

mysql many-to-many

0
推荐指数
1
解决办法
1403
查看次数

Hibernate ManyToMany 相同的 JoinColumn 名称

我有两个实体类ActivityUser. 它们之间的关系是:

  • 一个人Activity可以有一个或多个User
  • 一个User可以属于一个或多个Activity

所以为了实现这一点,我定义@ManyToMany了它们之间的映射。下面是我的课:

Activity

@javax.persistence.Entity
@Table(name = "ACTIVITY")
public class Activity extends Entity {

    @Transient
    private static final long serialVersionUID = 4741665931936809028L;

    private Set<User> users;

    public Activity() {
        super();
    }

    @ManyToMany(targetEntity = User.class, cascade = { CascadeType.ALL })
    @JoinTable(name = "ACTIVITY_USER", joinColumns = @JoinColumn(name = "ID"), inverseJoinColumns = @JoinColumn(name = "ID"))
    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = …
Run Code Online (Sandbox Code Playgroud)

orm many-to-many hibernate hibernate-mapping hibernate-4.x

0
推荐指数
1
解决办法
8409
查看次数

在rethinkdb中进行连接

我想在两个表之间建立连接.我正在运行的命令是:

r.table("userclientmap").eq_join("user_id", r.table("users"))
Run Code Online (Sandbox Code Playgroud)

我的'用户'表格如下所示:

[
    {
        "email":  "nielsen.ruben@gmail.com"
        "password":  "$2a$10$nO4/KHYkKRcx3D8GYwMCVu.gtsWd1SWzWz27N.TdxqdD9bf.LBXI6"
    }
]
Run Code Online (Sandbox Code Playgroud)

我的'userclientmap'表如下所示:

[
    {
        "client_id":  "3c0e6447-ab2f-401e-a09d-d84c32406fe2" ,
        "id":  "d6356002-9e51-4f82-afb7-49799f7b5ded" ,
        "user_id":  "nielsen.ruben@gmail.com"
    }
]
Run Code Online (Sandbox Code Playgroud)

从管理控制台运行我的查询时收到以下错误:

无法执行查询.

r.table("userclientmap").eq_join("user_id", r.table("users"))
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: Object function () {
    var args;
    args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
    if (args.length !== fun.length) {
      throw new err.RqlDriverError("Expected " + fun.length + " argument(s) but found " + args.length + ".");
    }
    return fun.apply(this, args);
  } has no method 'eq_join'
Run Code Online (Sandbox Code Playgroud)

我真的不知道从哪里开始.我的查询与http://rethinkdb.com/docs/table-joins/上的文档完全相同 …

database many-to-many join rethinkdb

0
推荐指数
1
解决办法
809
查看次数

同一个表中的多对多关系?

我对设计数据库相对较新,我想知道在同一个表中的行之间实现多对多关系的规范方法是什么。

就我而言,我有一个公式表,我想说表中的两个公式是相关的:

公式表:

formula_id SERIAL PRIMARY KEY
name TEXT NOT NULL
formula TEXT NOT NULL
Run Code Online (Sandbox Code Playgroud)

我假设我会创建一个名为 related_formulas 的新表,然后执行以下操作:

formula_relation_id SERIAL PRIMARY KEY
formula_id INT REFERENCES formulas (formula_id) ON DELETE CASCADE
formula_id2 INT REFERENCES formulas (formula_id) ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)

但后来我预见到了一些问题,例如阻止同一行中的两个 id 具有相同的值。我确信由于我自己的经验不足,还有其他潜在的问题我没有看到。

有人能指出我正确的方向吗?

database postgresql database-design many-to-many

0
推荐指数
1
解决办法
3893
查看次数

ManyToMany:MappingException:无法确定以下类型:java.util.List

我有一些桌子:

PROFIL:id_profil,...

体验:id_experience,id_profil#,...

COMPETENCE_LEVEL:id_competence_level,级别,...

一个PROFIL可以具有很多经验COMPETENCE_LEVEL

一个经验可以有很多COMPETENCE_LEVEL

一个COMPETENCE_LEVEL涉及到很多经验

因此,对我而言,这是EXPERIENCE和COMPETENCE_LEVEL之间的(np)ManyToMany关系。

我试过了:

PROFIL.java:

@Entity
@Table(name="profil")
public class Profil {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id_profil")
    private Long idProfil;

    public Profil() {
        super();
    }

    public Long getIdProfil() {
        return idProfil;
    }

    public void setIdProfil(Long idProfil) {
        this.idProfil = idProfil;
    }

    @Override
    public String toString() {
        //[...]
    }

}
Run Code Online (Sandbox Code Playgroud)

EXPERIENCE.java:

@Entity
@Table(name="experience")
public class Experience {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id_experience") …
Run Code Online (Sandbox Code Playgroud)

java many-to-many hibernate

0
推荐指数
1
解决办法
1421
查看次数

Django - 查询列表中任何项目位于ManytoMany字段中的任何对象

我在 Django 中有一个模型,它有一个名为“accepted_insurance”的多对多字段。我有一个表单,提交一个获取请求,其中包含包含保险提供商列表的查询字符串。我正在尝试编写一个查询,该查询表示“如果查询字符串列表中的任何项目位于多对多字段列表中,则过滤这些对象。”。有没有 Django 查询快捷方式?我尝试使用“包含”,但出现类型错误,表明相关字段的查找无效,并且我确信这只会说明列表是否包含列表。

模型.py

class Provider(models.Model):
    title = models.CharField(max_length=255, null=True, blank=True)
    first_name = models.CharField(max_length=255, null=True, blank=True)
    middle_name = models.CharField(max_length=255, null=True, blank=True)
    last_name = models.CharField(max_length=255, null=True, blank=True)
    email = models.EmailField(null=True, blank=True)
    phone = models.CharField(max_length=40, null=True, blank=True)
    extension = models.CharField(max_length=10, null=True, blank=True)
    company = models.CharField(max_length=255, null=True, blank=True)
    age = models.IntegerField(null=True, blank=True)
    about = models.TextField(default='', null=True, blank=True)
    position = models.CharField(max_length=255, null=True, blank=True)

    cost_per_session = models.CharField(max_length=255, null=True, blank=True)
    accepts_insurance = models.BooleanField(default=False)
    accepted_insurance = models.ManyToManyField('Insurance', blank=True)
    payment_methods = models.ManyToManyField('PaymentMethod', blank=True)
Run Code Online (Sandbox Code Playgroud)

请求.GET

http://localhost:8004/directory/?search=timothy&insurance=cigna,aetna,optum_health,united_behavioral,blue_cross_blue_shield

<QueryDict: …
Run Code Online (Sandbox Code Playgroud)

django many-to-many model get

0
推荐指数
1
解决办法
1700
查看次数

为什么在我的“多对多”Django 模型中没有采用 Django 的“add()”方法?

问题/问题:

我正在构建一个 Django 应用程序,有 2 个模型:UserSecret. 秘密可以由用户制作,其他用户可以“喜欢”它们。我已将我的likes字段设置为 a ManyToManyField,以便喜欢 Secret 的 Users 可以存储在那里并稍后检索等。但是,当我尝试查询 User 和 Secret 并使用时my_secret.likes.add(my_User) 什么也没有发生。我没有收到错误消息,当我打印我的 Secretmany-to-many likes字段时,添加后,我看到:secrets.User.None.

为什么我的add()方法正在运行,但我没有收到任何错误,为什么我的用户没有正确添加到我的 Secret 的赞中?

注意:我在最初创建时保存了 User 和 Secret 对象。在这个应用程序之外,我已经能够add()很好地使用该方法,但在那些场景中,我正在创建对象,而不是检索已经存在的对象。

add()使用从查询中检索到的数据时是否有不同的处理方式?这是我现在唯一的其他推理方式,我完全按照此处的文档进行操作:Django Many-to-Many Docs

如果在网站的其他地方回答了这个问题,我也深表歉意。我确实在这里找到了一篇文章,但没有提供解决方案,因为他们遇到了完全相同的问题。

我的模型:

class User(models.Model):
    """
    Creates instances of a `User`.

    Parameters:
    -`models.Model` - Django's `models.Model` method allows us to create new models.
    """ …
Run Code Online (Sandbox Code Playgroud)

python django many-to-many django-orm manytomanyfield

0
推荐指数
1
解决办法
1343
查看次数

laravel 在整数上调用成员函数 category()

我正在尝试更新数据透视表中的现有记录,以便与 laravel 建立多对多的关系。

我有商店功能可以工作:

public function store(Request $request)
{
    $produk = new product($request->input()) ;

    $feat = (boolean)$request->input('featured');
    $input = $request->all();
    $input['featured'] = $feat;

    $inputproduk = product::create($input);
    $inputproduk->categories()->attach($request->input('kat_id'));
    return redirect()->back()->with('message', 'Memasukkan Data Produk Berhasil');
}
Run Code Online (Sandbox Code Playgroud)

但是为什么我的更新功能不起作用???

public function update(Request $request, $id)
{
    $produk = Product::FindorFail($id);

    $produk = new product($request->input()) ;

    $input = $request->except('_method', '_token', 'picture', 'kat_id');
    $inputproduk = product::whereId($id)->update($input);
    $inputproduk->categories()->sync($request->input('kat_id'));

    return redirect()->back()->with('message', 'Mengedit Data Produk Berhasil');

}
Run Code Online (Sandbox Code Playgroud)

错误是:

在整数上调用成员函数 category()

那什么意识?请帮我。

看法 :

        <div class="form-group">
          <label for="KategoriProduk">Kategori Produk</label>
          <select class="form-control" name="kat_id[]" …
Run Code Online (Sandbox Code Playgroud)

php many-to-many laravel-5

0
推荐指数
1
解决办法
2227
查看次数

django使用给定列表过滤多对多

我想要filter一个通过多对多中间关系连接到第二个模型的 Django 模型。

class Person(models.Model):
    name = models.CharField(max_length=128)

    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

    def __unicode__(self):
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)
Run Code Online (Sandbox Code Playgroud)

设计和预期结果

结果应该是仅选择人员 A,因为他通过成员资格连接到具有条目 1 和 2 的组。我想使用Q对象来完成此类任务。

谁能给我提示吗?

python django many-to-many object filter

0
推荐指数
1
解决办法
3515
查看次数

如何在 Kotlin 中使用 JPA ManyToMany 双向关系

我有两个类,它们在 Spring Boot 应用程序中具有双向多对多关系。当我想获取我的实体时,它们开始递归循环,并且我收到一个 stackoverflow 异常。这是我的实现。

@Entity
@Table(name = "route")
data class Route(

        @Column(name = "uid")
        @Type(type = "pg-uuid")
        @Id
        var uid: UUID,
        var image: String,
        @Column(name = "rate_id")
        var rate_id: UUID,
        @ManyToMany(cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
        @JoinTable(name = "ach",
                joinColumns = [JoinColumn(name = "route_id", referencedColumnName = "uid")],
                inverseJoinColumns = [JoinColumn(name = "athlete_id", referencedColumnName = "uid")])
        var athletes: List<Athlete> = mutableListOf())

@Entity
@Table(name = "athlete")
data class Athlete(

        @Column(name = "uid")
        @Type(type = "pg-uuid")
        @Id
        var uid: UUID,
        var …
Run Code Online (Sandbox Code Playgroud)

many-to-many jpa kotlin spring-boot

0
推荐指数
1
解决办法
4284
查看次数