Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel5.1使用雄辩的语言检索不直接相关的属性_Php_Mysql_Eloquent_Laravel 5.1_Relationship - Fatal编程技术网

Php laravel5.1使用雄辩的语言检索不直接相关的属性

Php laravel5.1使用雄辩的语言检索不直接相关的属性,php,mysql,eloquent,laravel-5.1,relationship,Php,Mysql,Eloquent,Laravel 5.1,Relationship,我目前不知道如何以一种明智的方式完成这项工作。我不想写太多的疑问。 首先,我的桌子设计: users: |id|username| tickets: |id|user_id| ticket_replies: id|ticket_id|user_id| files: |id|ticket_replie_id|name 我的控制器: user: public function tickets() { return $this->hasMany('App\ticket')

我目前不知道如何以一种明智的方式完成这项工作。我不想写太多的疑问。 首先,我的桌子设计:

users:
|id|username|

tickets:
|id|user_id|

ticket_replies:
id|ticket_id|user_id|

files:
|id|ticket_replie_id|name
我的控制器:

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\u replie\u id。 在我的控制器中,我现在使用的是:

 $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生成的查询没有如上所述工作。如果有更简单的方法,就告诉我。
似乎雄辩者无法获得票证和文件之间的关系。如何使用ticket\u replie告诉Elokent有关系?

如果您已经知道
ticket\u replie\u id
您需要做的就是:

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

在更一般的情况下,您可以参考。

我想检查一下,用户是否“允许”下载此文件(没有用户可以“猜测”ID并下载与之无关的文件),这就是为什么我想使用
Auth::user()->tickets()
的方法。知道怎么做吗?我会首先识别文件,然后检查用户权限