Como selecionar itens de uma tabela com base em um valor, se outro valor não existir? (eloquente / sql)

Eu tenho uma tabela onde armazeno diferentes blocos de textos para o meu site. No momento, estou selecionando os blocos corretos para cada página com o slug da página e o idioma preferido. Gostaria de selecionar o mesmo bloco de texto (com o mesmo título) no idioma de fallback quando o idioma preferido não estiver disponível.

A tabela de blocos

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

Saída necessária

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

Atualmente, estou apenas selecionando os blocos com o idioma preferido selecionado, porque não sei como abordar isso selecionando o bloco 'idioma de fallback' se o bloco 'idioma preferido' não estiver disponível. Eu poderia tentar executar duas consultas para os dois idiomas e mesclá-las de alguma forma e apenas inserir os blocos 'idioma de fallback' se a contagem de títulos desse bloco for menor que 1, mas isso parece bastante elaborado e não é muito elegante?

Para meu aplicativo, estou usando eloquente:

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

Como eu poderia fazer isso de forma eloquente? (ou em SQL bruto, para esse assunto?)

questionAnswers(2)

yourAnswerToTheQuestion