ich habe mich in den letzten Stunden und Tagen mit einem Nachrichtensystem herumgeschlagen.
Es gibt User HABTM Messages. Also auch eine Tabelle mit dem Namen messages_users.
Bevor jemand fragt: es wird in der Tabelle mitgeschrieben, ob irgendwer schon die Nachricht gelesen hat, ob er Empfänger oder Versender ist und so weiter. Das kann ja nirgendwo anders abgelegt werden. Also hat m_u neben id, u_id und m_id "status" und "relation".
Zuerst:
Wie frage ich, wenn ich z.b. eine Inbox-Abfrage durchführen will? Das bedeutet ja, dass die u_id = "ich" ist und relation ist 1 (für incoming). Plus den Namen des Absenders, wenn ich in der Inbox bin bzw. den des Empfängers, wenn ich im "Sent" bin.
Ich kann jedoch im Controller nur die Modelle U und M abfragen, von denen keines diese Information enthält.
Mittlerweile frage ich die Messages per Hand ab, aber das kann's ja nicht sein:
- Code: Alles auswählen
- function inbox() {
// messages that were received
$this->User->id = $this->Session->read('UserId');
// step 1: get all messages, where I am the recipient
$query = "SELECT `MessagesUser`.`id`
FROM `messages_users` AS `MessagesUser`
WHERE `MessagesUser`.`user_id` = ".$this->User->id." AND `MessagesUser`.`relation` = 1";
$myinbox = $this->Message->query($query);
// step 2: get all data regarding these messages
if (!empty($myinbox)){
foreach ($myinbox as $message) {
$getmessage[] = $message['MessagesUser']['id'];
}
$conditions = array('id' => $getmessage);
$this->Message->Behaviors->attach('Containable');
$this->Message->contain(array('User' => array('fields' => array('name', 'firstname'))));
$this->set('messages', $this->Message->find('all', array('conditions' => $conditions)));
}
else {
$this->set('meldung', 'Keine Nachrichten in der Inbox');
}
}
Hat wer einen Tipp für mich? Auch wenn ich es hasse, Tipp mit zwei p zu schreiben...
Grüße,
Dogo