【发布时间】:2016-09-10 07:41:21
【问题描述】:
我有一张表格,用于为我的网站存储不同的文本块。我目前正在使用页面的 slug 和首选语言为每个页面选择正确的块。当首选语言不可用时,我想在备用语言中选择相同的文本块(具有相同的标题)。
方块表
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
所需输出
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
目前我只选择具有所选首选语言的块,因为如果“首选语言”块不可用,我不知道如何通过选择“备用语言”块来解决此问题。我可以尝试对两种语言运行两个查询,然后以某种方式合并它们,并且仅在此块的标题计数低于 1 时插入“后备语言”块,但这似乎相当复杂且不是很优雅?
对于我的应用,我使用的是 eloquent:
$blocks = Block::->where('slug', '=', 'home')
->whereIn('language', $selectedLanguage)
->get();
我怎么能用雄辩的方式做到这一点? (或者在原始 SQL 中,就此而言?)
【问题讨论】: