小编Ada*_*ann的帖子

Laravel Eloquent-嵌套关系具有两个层次以上的约束

** 更新帖子:我认为使用Eloquent实际上是不可能的,所以我采取了另一种方法,谢谢!**

考虑以下简化表:

content
---------------
| id | name   |
---------------
| 1  | news   |
| 2  | review |
---------------

games
-------------
| id | name |
-------------
| 8  | halo |
| 9  | gta  |
-------------

releases
-------------------------------
| id | name         | game_id |
-------------------------------
| 14 | halo for ps3 | 8       |
| 15 | halo for wii | 8       |
| 16 | gta for ps4  | 9       |
------------------------------- …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent

3
推荐指数
1
解决办法
3461
查看次数

如何在 Django 的 ORM (1.11) 中创建等效的 LEFT JOIN 查询

使用以下模型设置(为简洁起见进行了简化):

class Claim(models.Model):
    permalink = models.SlugField(max_length=255, blank=True, unique=True)
    author = models.ForeignKey(get_user_model(), db_index=True, on_delete=models.SET_NULL, null=True, blank=True)
    collaborators = models.ManyToManyField(get_user_model(), through='ClaimCollaborator', related_name='claims')
    # ...other fields

class ClaimCollaborator(models.Model):
    claim = models.ForeignKey(Claim, db_index=True, on_delete=models.CASCADE)
    user = models.ForeignKey(get_user_model(), db_index=True, on_delete=models.CASCADE)
    # ...other fields
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 Django 的 ORM 中复制以下 SQL 查询。

SELECT *
FROM claim c
LEFT JOIN claim_collaborator cc ON cc.claim_id = c.id
WHERE c.permalink = 'foo-bar'
AND (c.author_id = 2 OR cc.user_id = 2)
Run Code Online (Sandbox Code Playgroud)

我认为使用 的逻辑应该很简单django.db.models.Q,但我正在努力解决的问题是 LEFT JOIN。有点 Django ORM 菜鸟,我尝试了 select_related() …

python sql django

2
推荐指数
1
解决办法
1984
查看次数

标签 统计

django ×1

eloquent ×1

laravel ×1

php ×1

python ×1

sql ×1