繁体   English   中英

使用Laravel雄辩关系查询有什么优势?

[英]What's the advantage of using Laravel Eloquent Relationship queries?

因此,我试图通过实现雄辩的关系来改善查询。 假设我有一个线程表,每个线程都有回复

我需要的是一个带有所有答复数组的线程信息的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);
}

使用关系有优势吗? 他们对我来说都一样。

使用Eloquent,您可以执行以下操作:

public function show($threadId) {
    $threads = ThreadView::with('replies')->find($threadId);
    return response()->json($threads, 200);
}

with函数将渴望加载关系,而无需编写查询。

这是Eloquent的优势,它为您编写查询。 无需为您创建联接查询或其他查询。

public function show($threadId) {

    $threads= ThreadView::with('replies')->find($threadId);

    return response()->json($threads, 200);
}

主要优点是使用这样的关系,第一个示例执行2个选择(它获取100%的ThreadView然后获取100%的ReplyView ),而第二个示例仅执行1个查询。

第二个优点是,与其他语言相比,Eloquent在延迟加载方面做得非常好,如果您不是SQL查询方面的专家,则更好用。

放弃Eloquent模型并直接使用DB Builder的速度大约快500倍,我发现代码更简洁。 那可能就是您要寻找的。

但是,如果您使用模型,请使用关系!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM