【发布时间】:2018-01-19 16:08:41
【问题描述】:
所以我试图通过实现雄辩的关系来改进我的查询。 假设我有一个 threads 表,每个线程都有 replies
我需要的是一个包含所有回复数组的线程信息的 JSON 对象。
目前,我可以用这个实现我想要的。
public function show($threadId){
$threads = ThreadView::find($threadId);
$threads->replies = ReplyView::where('threadId', $threadId)->get();
return response()->json($threads, 200);
}
有了雄辩的关系,我可以用这样的东西达到同样的效果。
public function show($threadId) {
$threads= ThreadView::find($threadId);
$threads->replies= ThreadView::find($threadId)->Replies;
return response()->json($threads, 200);
}
使用关系有什么好处吗?在我看来,它们都一样。
【问题讨论】:
-
渴望加载是雄辩的地方,imo。使查询相关数据变得轻而易举。此外,它在代码中的可读性很好。
-
如果我没记错的话,如果您没有将回复定义为关系,并最终保存了您的线程,它将尝试保存“回复”字段并且会爆炸。因为当你查询一个关系时,它不是存储在属性中,但是如果你没有定义关系并使用
$threads->replies = ...,它会将它存储为一个属性
标签: php database laravel eloquent