gpt4 book ai didi

javascript - Laravel (Eloquent) 相当于 Mongoose 的 populate() 方法

转载 作者:行者123 更新时间:2023-11-30 14:54:00 24 4
gpt4 key购买 nike

我知道这个问题可能有不止一个与 DBMS 相关的答案,但也许没有,所以就这样吧。

所以,我需要我的应用程序从后端异步获取一些数据,例如 User 和他的 Posts。我在前端使用带有 Axios 的 Vue2,所以写这样的东西会很好:

mounted: function() {
axios.get('/users')
.then((response) => {
this.users = response.data;
})
.catch(function (err) {
// Handle this
});
}

我想要的结果是我的 VueVM 数据中的 users 对象还包含每个 Userposts 数组.目前,我在后端 Controller 中构建了一个自定义关联数组,如下所示:

$posts = Post::where('user_id', $id)->get();
return json_encode(['user' => $user, 'posts' => $posts]);

或者,在可行的情况下,我使用 has_many 方法,这也很方便,但我发现这个解决方案非常丑陋并且缺乏可重用性。

对于 Mongoose 和 MongoDB,我会使用 populate() 方法,但我找不到(也就是说,我实际上不知道如何搜索它)与 Eloquent 等效的方法。

有什么建议吗?

最佳答案

如果您在 User 模型中定义了 posts() 关系,则在检索用户时,您可以预先加载相关数据:

$users = User::with('posts')->get();

或特定用户:

$user = User::with('posts')->find($id);

然后 $user->posts 将包含相关 Post 模型的集合。

我建议你通读https://laravel.com/docs/5.5/eloquent-relationships

关于javascript - Laravel (Eloquent) 相当于 Mongoose 的 populate() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com