gpt4 book ai didi

php - Laravel 多对多查询 Controller

转载 作者:行者123 更新时间:2023-12-04 11:02:44 25 4
gpt4 key购买 nike

所以我有一个 films表和 conversations表和数据透视表 film_conversation
电影 (films)

'id'
'filmable_id',
'filmable_type',

对话 ( conversations)
'id'
'last_message_id'

电影对话 ( film_conversation)
'film_id'
'conversation_id'

我想创建一个 GET请求抓取属于该特定电影的所有对话,我有这个查询,但不确定我是否正确抓取它以及我将如何编写响应中返回的内容?

对话 Controller :
/**
*
*/
public function conversations()
{
$this->user = Auth::user();

$film = Film::whereHas('conversations', function ($query) {
return $query->where('id');
})->get();

return $film;
}

我还有一个问题,您应该直接将此查询包含在请求方法中还是将其拆分为私有(private)方法并将其包含在内以增加可读性和调用困惑?最佳做法是什么?这是我为前端公开的端点。

最佳答案

首先,您没有使用经过身份验证的用户,其次,您正在返回一个有任何对话的电影集合,查询约束没有做任何事情,您可以访问 $film->conversations获取收藏

public function conversations($id)
{
// Get all conversations for a specified film
return Film::find($id)->conversations;
// Get all conversations in all films that have a conversation
$films = Film::whereHas('conversations')->with('conversations')->get();
$conversations = $films->flatMap->conversations;
return $conversations;
}

希望这可以帮助

关于php - Laravel 多对多查询 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58693127/

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