如何从 Laravel 上的预加载中获取嵌套数据?
Posted
技术标签:
【中文标题】如何从 Laravel 上的预加载中获取嵌套数据?【英文标题】:How to get nested data from eager loading on Laravel? 【发布时间】:2021-04-03 21:23:45 【问题描述】:我有 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
但命令不起作用。对此的任何建议或指导将不胜感激,谢谢。
【问题讨论】:
【参考方案1】:代替:
$posts = Post::with('user')->get();
你可以使用:
$posts = Post::with(['user' => function($q)
$q->withCount('posts');
])->get();
以后你可以像这样使用它:
<td>$post.user['posts_count']</td>
【讨论】:
亲爱的 Marcin Nabiałek, 工作很棒。非常感谢。 @joenpcnpcsolution 很高兴我能提供帮助以上是关于如何从 Laravel 上的预加载中获取嵌套数据?的主要内容,如果未能解决你的问题,请参考以下文章