Всем привет! Я совсем запутался в этом ООП.
Мне нужно создать список объектов например
user. Каждый объект будет содержать в себе поля (их много. Имя фамилия, адрес, фото, логин, количество постов, подписчиков и т.д.).
Получить такой список объектов из базы просто... Делаем запрос:
SELECT * FROM `users`
Мы получим список объектов users. Вроде профит, НО...
Если в другом запросе нам нужно вывести пользователей "лайкнувших" пост. Опять выполняем запрос:
SELECT u.*
FROM `likes` lk
INNER JOIN `users` u ON u.`id` = lk.`user_id`
WHERE lk.`post_id` = 1775
Мы опять получили список тех же объектов, но фактически после второго запроса мы будем создавать объекты уже заново в куске кода, который не подойдет для первого запроса. Получается, что и в том и другом случае мы можем создать разные объекты, если будем указывать разные поля в запросе. Красиво получилось бы так:
И в первом и во втором запросе получаем только поле ID пользователя, а потом передаем эти ID в метод
getUsers, который выводит объекты
users по единому правилу. А тот в свою очередь делает запрос в БД, в котором во
WHERE IN() указывает полученные ID нужных пользователей. Но в этом случае получается два запроса, причем второй будет содержать кучу ID-шников в IN(). Что явно плохо...
Вот вопрос, как сделать так, чтобы можно было использовать единый метод для получения объектов
user?
Или все-таки это правильно, создавать новый объект в каждом запросе, ведь в приложении встречаются не только запросы по лайкнувшим пост пользователям, но и подписчики, поиск по по пользователям, список недавно зарегистрированных пользователей и так далее... Выходит для каждого такого запроса нужно создавать свои объекты
users.
Прошу прощение за такое изложение вопроса, надеюсь я нормально объяснил... может устал за целый день...