Ich versuche, mit eloquent in Laravel 11 über Chat-bezogene Daten zu holen, aber ich kämpfe darum, eine optimierte Abfrage mit eloquenten Beziehungen oder Verbindungen zu strukturieren. < /p>
Ich habe zwei MySQL-Tabellen : < /p>
Benutzer -> ID, full_name, profile_pic < /li>
CHAT_MESSAGES -> ID, SENTER_ID, Receiver_id, Nachricht, erstellt_at , read (0 = ungelesen, 1 = read) < /li>
< /ol>
Gewünschte Ausgabe:
Ich möchte die folgenden Daten für einen bestimmten Absender abholen (Sender_id = 1): < /p>
{
"user": {
"id": 1,
"full_name": "Sender Name",
"profile_pic": "sender profile pic url"
},
"chat_message": {
"unread": 3, // count of unread messages from sender_id = 1
"last_message": "whatever it was", // last message sent by sender_id = 1
"created_at": "last message's sent time"
}
}
< /code>
Rohabfragen, die funktionieren: < /p>
// Fetch user details
SELECT id, full_name, profile_pic FROM users WHERE id = 196;
// Count unread messages from sender_id = 196
SELECT COUNT(id) FROM chat_messages WHERE read = 0 AND sender_id = 196 AND receiver_id = 197;
// Get last message from sender_id = 196
SELECT message, created_at
FROM chat_messages
WHERE sender_id = 196 AND receiver_id = 197
ORDER BY id DESC
LIMIT 1;
Meine Frage:
Gibt es eine effiziente Möglichkeit, dies mit eloquenten Beziehungen oder Verbindungen anstelle mehrerer Rohfragen zu erreichen?
Wie kann ich dies für die Leistung in Laravel 11 optimieren? holt MySQL jede Zeile aus Tabelle 1 nacheinander aus und sucht dann nach einer passenden Zeile in Tabelle 2, bevor sie zur nächsten Zeile wechselt? 1 und dann schließen Sie sich ihnen mit Tabelle 2 an, basierend auf Einschränkungen? Dank im Voraus. < /p>
Tabelle mit Dummydaten zum Testen. < /P>
Ich versuche, mit eloquent in Laravel 11 über Chat-bezogene Daten zu holen, aber ich kämpfe darum, eine optimierte Abfrage mit eloquenten Beziehungen oder Verbindungen zu strukturieren. < /p> Ich habe zwei MySQL-Tabellen : < /p>
Benutzer -> ID, full_name, profile_pic < /li> CHAT_MESSAGES -> ID, SENTER_ID, Receiver_id, Nachricht, erstellt_at , read (0 = ungelesen, 1 = read) < /li> < /ol> Gewünschte Ausgabe: Ich möchte die folgenden Daten für einen bestimmten Absender abholen (Sender_id = 1): < /p> [code]{ "user": { "id": 1, "full_name": "Sender Name", "profile_pic": "sender profile pic url" }, "chat_message": { "unread": 3, // count of unread messages from sender_id = 1 "last_message": "whatever it was", // last message sent by sender_id = 1 "created_at": "last message's sent time" } } < /code> Rohabfragen, die funktionieren: < /p> // Fetch user details SELECT id, full_name, profile_pic FROM users WHERE id = 196;
// Count unread messages from sender_id = 196 SELECT COUNT(id) FROM chat_messages WHERE read = 0 AND sender_id = 196 AND receiver_id = 197;
// Get last message from sender_id = 196 SELECT message, created_at FROM chat_messages WHERE sender_id = 196 AND receiver_id = 197 ORDER BY id DESC LIMIT 1; [/code] Meine Frage: Gibt es eine effiziente Möglichkeit, dies mit eloquenten Beziehungen oder Verbindungen anstelle mehrerer Rohfragen zu erreichen? Wie kann ich dies für die Leistung in Laravel 11 optimieren? holt MySQL jede Zeile aus Tabelle 1 nacheinander aus und sucht dann nach einer passenden Zeile in Tabelle 2, bevor sie zur nächsten Zeile wechselt? 1 und dann schließen Sie sich ihnen mit Tabelle 2 an, basierend auf Einschränkungen? Dank im Voraus. 🙌 < /p> Tabelle mit Dummydaten zum Testen. < /P> [code]CREATE TABLE `chat_messages` ( `id` bigint(20) UNSIGNED NOT NULL, `sender_id` bigint(20) UNSIGNED NOT NULL, `receiver_id` bigint(20) UNSIGNED NOT NULL, `message` text NOT NULL, `read` tinyint(3) UNSIGNED NOT NULL DEFAULT 0, `created_at` timestamp NOT NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Ich versuche, mit eloquent in Laravel 11 über Chat-bezogene Daten zu holen, aber ich kämpfe darum, eine optimierte Abfrage mit eloquenten Beziehungen oder Verbindungen zu strukturieren.
Ich habe...
Ich habe einige JSON -Daten in DummyData . Ich bin mir nicht sicher, wie ich die Chat -Blasen links und rechts nach der Richtung platzieren kann. Ich benutze Material UI und Kontext -API. Bild als...
Ich habe andere Beiträge überprüft, in denen der Fehler in der Betreffzeile erwähnt wurde, aber keiner davon hat geholfen. Ich habe den Server in einem Projekt und den Client in einem anderen.
Dies...
Ich verwende den Laravel Eloquent Query Builder und habe eine Abfrage, in der ich eine Where -Spackung unter mehreren Bedingungen möchte. Es funktioniert, aber es ist nicht elegant.