如何从 Laravel 上的预加载获取嵌套数据?
How to get nested data from eager loading on 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);
}
我可以将关系中的用户名和用户电子邮件呈现为 table,如下所示。
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。我尝试 ${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>
我有 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);
}
我可以将关系中的用户名和用户电子邮件呈现为 table,如下所示。
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。我尝试 ${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>