Php Laravel通过关系获取数据

Php Laravel通过关系获取数据,php,laravel,Php,Laravel,我使用此hasOneThrough获取用户,通过post显示结果inf文件: 控制器 File::where('agent_id', $user->id) ->with(['user' => function ($q) { $q->select('name','phone'); }])->get(['post_id', 'status']); 型号 // ___

我使用此
hasOneThrough
获取
用户
,通过
post
显示结果inf
文件

控制器

File::where('agent_id', $user->id)
                ->with(['user' => function ($q) {
                    $q->select('name','phone');
                }])->get(['post_id', 'status']);
型号

// __________________________ related__|__through_|_1key_|_2key_|_lkey_|_seclkey

return $this->hasOneThrough('App\User', 'App\Post', 'id', 'id', 'post_id', 'user_id');

// ___________________________________________^ > want to get `hash` from `post`
这很好,但是现在我需要一个来自
post
的项目,名为
hash
。在这个结果中,是否可以通过
(post表)从
获取任何数据。已经能够从
文件
用户
中获取任何数据,但是如何通过
(Post表格)从
中获取数据


我不知道该怎么做,所以我搜索了一下,什么也没找到,所以我什么也没试过。

如果您的
文件
表有
post\u id
,并且
posts
文件
表之间有一对多关系,只需声明一个新关系:

public function post(){
返回$this->belongsTo('App\Post','Post\u id','id');
}

还请记住,如果在
中使用
只想选择特定字段,则可以使用('user:phone,name')

执行
->操作

如果
文件
表具有
post\u id
,并且
posts
文件
表之间存在一对多关系,只需声明一个新关系:

public function post(){
返回$this->belongsTo('App\Post','Post\u id','id');
}

还请记住,如果在
with
中只想选择特定字段,则只需使用('user:phone,name')执行
->

即可。
您应该在您的机型中使用
hasOne

public function post(){
    return $this->hasOne('App\Post', 'id', 'post_id');
}
在您的控制器中,您可以使用,但我注意到您得到了
null
,为了使其工作,您还必须选择id:

$files = File::where('agent_id', $user->id)->with('user:phone,name', 'post:id,hash')->get(['post_id', 'status']);

您应该在您的模型中使用hasOne

public function post(){
    return $this->hasOne('App\Post', 'id', 'post_id');
}
在您的控制器中,您可以使用,但我注意到您得到了
null
,为了使其工作,您还必须选择id:

$files = File::where('agent_id', $user->id)->with('user:phone,name', 'post:id,hash')->get(['post_id', 'status']);


这里没有“通过”表格?..@Albertosinagalia
App\Post
is
through
。有
posts
table。您想让Post与该文件关联吗?@Albertosinaglia是的,文件有
Post\u id
,正如您所看到的,我已经能够通过
Post\u id`获得
用户。这里没有“through”table?..@Albertosinaglia
App\Post
通过
获得的。有
posts
表。你想让Post与该文件关联吗?@Albertosinaglia是的,文件有
Post\u id
,正如你所看到的,我已经能够通过
Post\u id`获得
用户。哦,最后一个提示很好,谢谢你。而且你的解决方案很好,回答得很好!在
模型中
应该是这样的->
->带有('user:phone,name','post:hash')
?如果是,我得到了
“post”:null
看不出原因,但找不到任何示例,而且我没有测试它的测试用例。从逻辑上讲,它应该可以工作,但它只能像这样使用('user:phone,name','post')
返回post中的所有数据,但我只想使用(['user:phone,name','post:hash')尝试
->使用(['user:phone,name','post:hash'))
哦,最后一个提示很好,谢谢你。而且你的解决方案很好,回答得很好!在
模型中
应该是这样的->
->带有('user:phone,name','post:hash')
?如果是,我得到了
“post”:null
看不出原因,但找不到任何示例,而且我没有测试它的测试用例。从逻辑上讲,它应该可以工作,但它只能像这样使用('user:phone,name','post')
返回post中的所有数据,但我只想使用(['user:phone,name','post:hash')尝试
->使用(['user:phone,name','post:hash'))
哦,太好了,我认为这是我项目中的一个问题,但为什么呢?是拉维尔虫子还是有原因?虽然上一个答案很有道理,给了我一个解决方案,但你的答案比上一个更完美。哦,太好了,我认为这是我项目中的一个问题,但为什么?是拉维尔虫子还是有原因?虽然上一个答案很有道理,给了我一个解决方案,但你的答案比上一个更完美。