Empfehlungen: Erweiterte Suche

HABTM mit containable

Daten auslesen, verarbeiten und den Views übergeben

HABTM mit containable

Beitragvon Dogo » Mo 15. Feb 2010, 15:36

Huhu,

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
Benutzeravatar
Dogo
 
Beiträge: 63
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal

Re: HABTM mit containable

Beitragvon Dogo » Mo 15. Feb 2010, 16:01

Wenn ich den Status der join-Tabelle ändere, dann wird auch "modified" nicht geändert :(
Benutzeravatar
Dogo
 
Beiträge: 63
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal

Re: HABTM mit containable

Beitragvon euromark » Mo 15. Feb 2010, 16:57

deswegen benutzt man keine HABTM tables in cake, wenn man mehr als nur die beiden IDs speichern will
einfach 2x normale 1:N beziehungen, damit klappt alles
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: HABTM mit containable

Beitragvon Dogo » Mo 15. Feb 2010, 17:14

Wie wäre das dann in meinem Fall? War das so, wie in dem event-artist-Fall?

Users, messageusers, messagesuser, messages?
Nicht, dass ich das verstanden hätte, aber ich werde es mal überdenken :)

Danke schon mal!

Dogo
Benutzeravatar
Dogo
 
Beiträge: 63
Registriert: Do 6. Aug 2009, 00:59
Wohnort: Wuppertal


Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast