Abfrage für Nachrichten Thread

Trawell

Neuer Benutzer
Beiträge
2
Hallo Community

Ich möchte eine Abfrage über eine Nachrichtentabelle machen.
Das Resultat sollte fogendermassen aussehen:

Zeige alle Nachrichten an mich gesendet von einem bestimmten User UND von mir gesendet an einen bestimmten User.

Ich hab aber folgende Probleme:

Wenn ich eine Nachricht aufrufe, wo ich Empfänger bin, bekomme ich alle Nachrichten, wo ich Empfänger bin, aber nicht wo ich geschickt habe.

Wenn ich eine Nachricht anrufe, wo ich Absender bin, bekomme ich nur genau diese eine Nachricht, aber nicht wo ich Empfänger bin.

Hier ist der Code (Laravel):

<code>
$message = Message::find($id);

echo 'ad id: '.$ad_id = $message->ad_id.'<br>';
echo 'me:'.$me = Auth::id().'<br>';
echo 'sender:',$sender = $message->sender_id.'<br>';
echo 'recipient:'.$recipient = $message->recipient_id.'<br>';

$messages = Message::eek:rderBy('id', 'desc')

// Message to me
->Where(function ($q1) use ($ad_id, $me, $sender, $recipient) {
$q1->Where('ad_id', $ad_id)
->Where('recipient_id', $me)
->Where('sender_id', $sender);
})

// Message from me
->orWhere(function ($q2) use ($ad_id, $me, $sender, $recipient) {
$q2->Where('ad_id', $ad_id)
->Where('recipient_id', $recipient)
->Where('sender_id', $me);
})
->get();
return view ('messages.show', compact('message'), compact('messages'));
</code>

Wo hab ich mein Denkfehler ?

Gruss, Traw
 
Werbung:
$q1->Where('ad_id', $ad_id)
->Where('recipient_id', $me)
->Where('sender_id', $sender);

Ohne das Framework jetzt im Detail zu kennen, würd ich vermuten, dass mehrere WHERE Bedingungen sich überschreiben und nur die letzte gilt.
Nach der ersten WHERE bedingung muss ein AND oder OR kommen. Wie das hier abzubilden ist weiß ich nicht. Da bist in einem php Forum evtl. besser aufgehoben.
 
Werbung:
Hallo drdmitri

So wie ich verstanden habe, entsprechen zwei Where's nacheinander einem AND in Laravel. Ich werd Deiner Vermutung mal nachgehen,
Danke für Deine Info

Gruss, Traw
 
Zurück
Oben