ThunderCat ,
Даниил,
pantsarny
вот запрос к которому Я пришел и он достает то что мне надо. Но Я столкнулся с проблемой, в PDO нельзя везде установить одно название для бинда значения и Я сделал вот так (код после текста), но мне кажется так неправильно делать. Можете что-то посоветовать?
public function dialogueList($id)
{
try
{
$query = "
SELECT
m.message,
m.date,
u.login AS interlocutor_name,
i.img AS interlocutor_img
FROM messages m
JOIN (
SELECT MAX(date) AS max_date, dialog_id
FROM messages
WHERE from_user_id = :id1 OR to_user_id = :id2
GROUP BY dialog_id
) t ON m.dialog_id = t.dialog_id AND m.date = t.max_date
JOIN users u ON
(CASE
WHEN m.from_user_id = :id3 THEN m.to_user_id = u.id
WHEN m.to_user_id = :id4 THEN m.from_user_id = u.id
END)
LEFT JOIN
image i ON u.id = i.obj_id AND i.obj_type = 'user'
WHERE m.from_user_id = :id5 OR m.to_user_id = :id6
";
$stmt = $this->db->prepare($query);
$stmt->bindValue(":id1", $id, PDO::PARAM_INT);
$stmt->bindValue(":id2", $id, PDO::PARAM_INT);
$stmt->bindValue(":id3", $id, PDO::PARAM_INT);
$stmt->bindValue(":id4", $id, PDO::PARAM_INT);
$stmt->bindValue(":id5", $id, PDO::PARAM_INT);
$stmt->bindValue(":id6", $id, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();
return $data;
}
catch(PDOException $e)
{
echo $e;
}
}