gpt4 book ai didi

php - 如何在 laravel 4 中使用数据透视表上的 where 条件来获取数据

转载 作者:行者123 更新时间:2023-11-29 21:53:55 25 4
gpt4 key购买 nike

如何使用belongsToMany关系模型获取数据。

Table tags
- id
- name
...

Table photo_entries
- id
...

Table photo_entry_tag
- id
- tag_id
- photo_entry_id

Tag.php

public function photo_entry()
{
return $this->belongsToMany('PhotoEntry');
}

PhotoEntry.php

public function tags()
{
return $this->belongsToMany('Tag');
}

现在我需要从 photo_entries 表中获取 照片条目及其标签 where tag_id=1

我已经尝试过:

$photos = PhotoEntry::orderBy('votes', 'desc')->with(array('tags' => function($query)
{
$query->where('tag_id', 1);
}))->paginate(50);

但它没有给我正确的结果,它返回了所有照片。我不明白问题是什么。

谁能帮帮我吗?

最佳答案

您需要选择 photo_entries 表中与 photo_entry_tag 表中有关系的所有记录,以便您的查询应如下所示

$tag_id = 1;
$query = "SELECT * FROM `photo_entries` WHERE `id` IN (SELECT `photo_entry_id` FROM `photo_entry_tag` WHERE `tag_id` = {$tag_id})";

此外,eloquent 中的等价代码将类似于下面的代码

$tag_id = 1;
$photos = PhotoEntry::whereIn('id', function($query) use ($tag_id) {
$query->select('photo_entry_id')->from('photo_entry_tag')->whereTagId($tag_id
);
})->get();

您还可以在 get() 之前添加 orderBy('votes', 'desc') 对结果进行排序

关于php - 如何在 laravel 4 中使用数据透视表上的 where 条件来获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33365869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com