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']);
这里没有“通过”表格?..@AlbertosinagaliaApp\Post
isthrough
。有posts
table。您想让Post与该文件关联吗?@Albertosinaglia是的,文件有Post\u id
,正如您所看到的,我已经能够通过Post\u id`获得用户。这里没有“through”table?..@AlbertosinagliaApp\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'))
哦,太好了,我认为这是我项目中的一个问题,但为什么呢?是拉维尔虫子还是有原因?虽然上一个答案很有道理,给了我一个解决方案,但你的答案比上一个更完美。哦,太好了,我认为这是我项目中的一个问题,但为什么?是拉维尔虫子还是有原因?虽然上一个答案很有道理,给了我一个解决方案,但你的答案比上一个更完美。