我有两个 SQL 表,“产品”和“标签”。它们具有 n:m 关系,使用第三个表“product_tags”。
我想使用查询来查找具有多个特定标签的每个产品。例如,查找与标签 1、23 和 54 相关的所有产品。
有没有办法只用一个查询来做到这一点?
我有两个实体类Activity和User. 它们之间的关系是:
Activity可以有一个或多个UserUser可以属于一个或多个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) 我想在两个表之间建立连接.我正在运行的命令是:
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/上的文档完全相同 …
我对设计数据库相对较新,我想知道在同一个表中的行之间实现多对多关系的规范方法是什么。
就我而言,我有一个公式表,我想说表中的两个公式是相关的:
公式表:
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 具有相同的值。我确信由于我自己的经验不足,还有其他潜在的问题我没有看到。
有人能指出我正确的方向吗?
我有一些桌子:
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) 我在 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 应用程序,有 2 个模型:User和Secret. 秘密可以由用户制作,其他用户可以“喜欢”它们。我已将我的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) 我正在尝试更新数据透视表中的现有记录,以便与 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) 我想要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对象来完成此类任务。
谁能给我提示吗?
我有两个类,它们在 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)