小编771*_*120的帖子

Mysql 将列拆分为多列

我有一张像:

  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)

mysql sql

1
推荐指数
1
解决办法
1172
查看次数

Laravel雄辩,如果没有结果则更改查询

使用英语后备选项创建多语言网站.

我有一张桌子"语言"

__________________
|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查询吗?不破坏链(实际模型有多个范围功能)

php laravel eloquent laravel-4

1
推荐指数
1
解决办法
1797
查看次数

标签 统计

eloquent ×1

laravel ×1

laravel-4 ×1

mysql ×1

php ×1

sql ×1