Wie werden Elemente aus einer Tabelle basierend auf einem Wert ausgewählt, wenn kein anderer Wert vorhanden ist? (eloquent / sql)

Ich habe eine Tabelle, in der ich verschiedene Textblöcke für meine Website speichere. Ich wähle derzeit die richtigen Blöcke für jede Seite mit dem Slug der Seite und der bevorzugten Sprache aus. Ich möchte denselben Textblock (mit demselben Titel) in der Fallback-Sprache auswählen, wenn die gewünschte Sprache nicht verfügbar ist.

Die Blocktabelle

columns:
| id | slug | title | language | content |

entries:
| 1 | home | first | en | the first block |
| 2 | home | first | nl | het eerste blok |
| 3 | home | second | en | the second block |
    --> block "second" not available for the 'nl' language

Erforderliche Ausgabe

fallback language = en

selected prefered language = en, output:
| 1 | home | first | en | the first block |
| 3 | home | second | en | the second block |

selected prefered language = nl, output:
| 2 | home | first | nl | het eerste blok |
| 3 | home | second | en | the second block |
     --> select this one, because the 'nl' version is not available

Gegenwärtig wähle ich nur die Blöcke mit der ausgewählten bevorzugten Sprache aus, da ich nicht weiß, wie ich mit der Auswahl des Blocks "Fallback-Sprache" vorgehen soll, wenn der Block "Bevorzugte Sprache" nicht verfügbar ist. Ich könnte versuchen, zwei Abfragen für beide Sprachen auszuführen und sie dann irgendwie zusammenzuführen und die 'Fallback-Sprach'-Blöcke nur einzufügen, wenn die Titelanzahl dieses Blocks niedriger als 1 ist, aber dies scheint ziemlich aufwendig und nicht sehr elegant zu sein?

Für meine App verwende ich eloquent:

$blocks = Block::->where('slug', '=', 'home')
                ->whereIn('language', $selectedLanguage)
                ->get();

Wie könnte ich das eloquent machen? (oder in rohem SQL?)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage