Всем привет! Помогите разобраться, не могу создать полноценный объект поста с изображениями. Весь код в вопросе упрощу на сколько смогу...
Есть контроллер, который вызывает метод
getUserPosts модели (
PostModel), для получение постов пользователя. Код метода примерно следующий:
function getUserPosts($user_id){
$res = $this->db->query("SELECT `id`,`title`, `text` FROM `posts` WHERE `user_id` = {$user_id}");
while($row = $res->fetch_assoc()){
$this->addPostsId($row['id']); // сохраняем id постов, чтобы потом использовать только те ID, с которыми посты получены
$this->list_posts[] = new PostEntity($row['id'], $row['title'], $row['text']);
}
return $this->list_posts;
}
т.е. в контроллере мы получаем массив объектов PostEntity;
теперь нам нужо получить изображения, которые содержит каждый пост и вкинуть их в соответствующий объект, чтобы в конце получить такой json:
"items": [
{
"id": 646,
"title": "Заголовок поста",
"text": "Содержание поста"
"attachments": [
{
"type": "image",
"id": 54645,
"name": "1111111.jpg"
},
{
"type": "image",
"id": 54648,
"name": "2222222.jpg"
}
]
}
]
На ум пришло делать так (для экономии запросов к БД): В контроллере вывода постов, после получения постов из выше описанного метода. Обращаться к модели
Attachments и получать изображения с помощью метода
getImagesFromPostsId($PostModel->getPostsId) (тут мы получим массив ID, которые записывали при выборке в $this->posts_list, и передадим их как ID постов для которых прикреплены изображения). В итоге код на получение изображений будет такой:
function getImagesFromPostsId(array $posts_id){
$res = $this->db->query("SELECT `id`, `name`, `post_id` FROM `images` WHERE `post_id` IN (".implode(',', $posts_id).")");
while($row = $res->fetch_assoc()){
$this->list_images[] = new ImageEntity($row['id'], $row['name'], $row['post_id']);
}
return $this->list_images;
}
В итоге мы получим все изображения, которые есть в выбранных выше постах. Но как теперь связать это все вместе? Например, проходим циклом по массиву
$Attachments->list_images, получаем в каждом цикле ID поста, к которому нужно привязать объект изображения, но как теперь найти этот самый объект нужного нам поста?
Может я пошел не по правильному пути изначально? Поправьте плз, если так... Может есть менее запутанный алгоритм? Может видите какие-то подводные камни?