我有3个收藏集:
+----------------+ +----------------+ +----------------+
| Posts | | PostImages | | PostFiles |
+----------------+ +----------------+ +----------------+
| id | | id | | id |
| title | | post_id | | post_id |
| description | | patch | | patch |
| user_id | +----------------+ | description |
+----------------+ +----------------+
控制器:
$posts = User::find($userdata->id)->posts;
$postids = Post::where('user_id', $userdata->id)->pluck('id')->toArray();
$images = PostImage::wherein('post_id ', $postids )->get()->All();
$files = Docs::wherein('post_id', $postids )->get()->All();
是否可以在不使用循环的情况下合并这三个集合以得到此结构:
[post1] => [
title => title,
content => content,
images => collection [
image1 => patch,
image2 => patch,
image3 => patch,
],
Files => [
[0] => [
file1 => patch,
description1 => description
],
[1] => [
file2 => patch,
description2 => description
]
]
],
[post2] => [
title => title,
content => content,
images => collection [
image1 => patch,
image2 => patch,
image3 => patch,
],
Files => [
[0] => [
file1 => patch,
description1 => description
],
[1] => [
file2 => patch,
description2 => description
]
]
],
有什么想法吗?
答案 0 :(得分:3)
是的,Laravel的“ WITH”正是您所需要的。
示例:
在发布模型中添加这些功能。
public function images()
{
return $this->hasMany(YouImageModel::class, 'post_id');
}
public function files()
{
return $this->hasMany(YourFileModel::class, 'post_id');
}
因此,在发帖时,您可以急于加载图像。
$posts = Post::where('user_id', $userdata->id)->with(['images', 'files])->posts;
这里是doc link