我有一张像:
id | cat | price
----------------------
0 | 1 | 2
0 | 2 | 1
0 | 1 | 1
1 | 1 | 31
1 | 2 | 5
----------------------
Run Code Online (Sandbox Code Playgroud)
我喜欢选择它:
id | cat1_price | cat2_price
----------------------------------
0 | 3 | 1
1 | 31 | 5
----------------------------------
Run Code Online (Sandbox Code Playgroud)
到目前为止我的查询:
SELECT SUM(`price`) as cat1_price FROM price_table WHERE cat = 1 GROUP BY id
Run Code Online (Sandbox Code Playgroud)
它可以获取所需的列之一。我怎么能两者兼得?
我也尝试过类似的事情:
SELECT SUM(`price`) as cat1_price
(SELECT SUM(`price`) FROM price_table WHERE cat = 2) …Run Code Online (Sandbox Code Playgroud) 使用英语后备选项创建多语言网站.
我有一张桌子"语言"
__________________
|language | text |
------------------
| "EN" | "good" |
------------------
| "NL" | "goed" |
------------------
Run Code Online (Sandbox Code Playgroud)
我在控制器中的雄辩查询是:
Languages::language('EN')->take(1)->get();
Run Code Online (Sandbox Code Playgroud)
在模型语言中,我有一个范围功能:
public function scopeLanguage($query, $language)
{
$query->where('language', '=', $language);
}
Run Code Online (Sandbox Code Playgroud)
哪作得很完美.但是当我尝试查询表中不存在的语言时.例如:
Languages::language('DE')->take(1)->get();
Run Code Online (Sandbox Code Playgroud)
它没有返回任何结果,但我想要回退到"EN"
我尝试过这样的事情:
public function scopeLanguage($query, $language)
{
$query->where('language', '=', $language);
if ($query->count() > 0) {
return $query;
} else {
return $query->where('language', '=', "EN");
}
}
Run Code Online (Sandbox Code Playgroud)
没有运气,似乎它添加了新的查询现有的.我可以删除/更改where查询吗?不破坏链(实际模型有多个范围功能)