gpt4 book ai didi

php - laravel5.1 使用 eloquent 检索不直接相关的属性

转载 作者:行者123 更新时间:2023-11-29 21:30:22 26 4
gpt4 key购买 nike

我目前不知道如何以聪明的方式完成这项工作。我想防止编写大量查询。首先是我的表格设计:

users:
|id|username|

tickets:
|id|user_id|

ticket_replies:
id|ticket_id|user_id|

files:
|id|ticket_replie_id|name

我的 Controller :

user:
public function tickets()
{
return $this->hasMany('App\ticket');
}

ticket:
public function ticket_replie()
{
return $this->hasMany('App\ticket_replie', 'ticket_id', 'id');
}

ticket_replie:
public function file()
{
return $this->hasOne('App\File', 'ticket_replie_id', 'id');
}

关系如下,一个用户有很多票。每张票证都有许多票证回复。一个ticket_replie有一个附件(文件)。现在我需要检索给定票证和 Ticket_replie_id 的文件名。在我的 Controller 中,我现在使用它:

 $ticket = Auth::user()->tickets()->where('tickets.id', $id)->where('files.ticket_replie_id', $attachment_id)->firstOrFail();

Laravel 向我生成此查询和错误:

select * from `tickets` where `tickets`.`user_id` = 1 and `tickets`.`user_id` is not null and `tickets`.`id` = 43 and `files`.`ticket_replie_id` = 39 limit 1

Column not found: 1054 Unknown column 'files.ticket_replie_id' in 'where clause

查询必须类似于:

select * from `tickets`, `files` where `tickets`.`user_id` = 1 and `tickets`.`user_id` is not null and `tickets`.`id` = 43 and `files`.`ticket_replie_id` = 39 limit 1

当我在数据库中运行此查询时,它会返回所需的信息。我检索信息的方式可以吗?我的错在哪里,因为目前 Eloquent 生成的查询无法按上述方式工作。如果有更简单的方法,请告诉我。看来 eloquent 无法获取票证和文件之间的关系。如何使用ticket_replie告诉eloquent存在关系?

最佳答案

如果您已经知道ticket_replie_id,您所要做的就是:

File::where('ticket_replie_id', $ticket_replie_id)->first();

在更一般的情况下,您可以引用 Eager Loading .

关于php - laravel5.1 使用 eloquent 检索不直接相关的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316038/

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