laravel - 如何从 Laravel 上的预加载中获取嵌套数据?
问题描述
我有 Post 和 User 模型,关系如下。
User Model:
public function posts(){
return $this->hasMany(Post::class);
}
Post Model:
public function user(){
return $this->belongsTo(User::class);
}
下面是从 Ajax 调用的 Api 函数。
public function Api(Request $request){
$posts = Post::with('user')->get();
return response()->json($posts);
}
我可以将用户名和用户电子邮件从关系呈现到下表中。
loadData().then(data => {
let html = ``;
data.forEach((post,index) =>
html += `<tr >
<td> ${post.title} </td>
<td> ${post.user['name']}</td>
<td> ${post.user['email']}</td>
<td> *num_of_post*</td> //<--need num of post here
</tr>`
)
$("#table_wrapper").html(html);
})
另外我想为每个用户呈现帖子的数量。我尝试${post.user.posts.lenght}
但命令不起作用。对此的任何建议或指导将不胜感激,谢谢。
解决方案
代替:
$posts = Post::with('user')->get();
您可以使用:
$posts = Post::with(['user' => function($q) {
$q->withCount('posts');
}])->get();
稍后您可以像这样使用它:
<td>${post.user['posts_count']}</td>
推荐阅读
- sharepoint - 如何以编程方式获取租户中当前用户的“最近访问的共享点站点”?
- google-tag-manager - 如何从标签谷歌标签管理器获取谷歌标签 ID
- html - 如何使用 HTML 渲染图像,使用 Flutter 创建 iOS-App 的 CSS?
- azure - 为什么不同的 Microsoft Graph API 返回不同的数据
- javascript - jquery 验证无法正常工作
- git - 从 TFS 克隆所有远程存储库
- node.js - Sequelize 似乎上限为 30 个模型
- node.js - 猫鼬 findByIdAndRemove() 奇怪的行为
- javascript - 将具有类(及其基础元素)的现有 div 元素添加到 div
- performance - Nativescript 是否支持 Dynatrace?