【问题标题】:ORDER BY with default INTEGER value 0ORDER BY 默认 INTEGER 值为 0
【发布时间】:2016-04-30 09:59:37
【问题描述】:

我有一个数据类型为 INTEGER 的字段。

我想按 asc 显示产品订单。

1,2,3,4

controller.php

$products       = $this->product->getUntrashed('main_category', ucfirst($label), $limit, 'top', 'asc', $min, $max, $designers, $categories, $colors, $availability);

public function getUntrashed($column, $value, $limit = 9, $order, $sort, $min, $max, $designers, $categories, $colors, $availability)
{
return Product::where($column, $value)->whereNull('deleted_at')->where('price', '>=', $min)->where('price', '<=', $max)->where('visibility', '=', 1)->where('stock_count', '!=', 0)->where('status', '!=',0)->orderBy($order, $sort)->paginate($limit);
}

问题是:

使用默认值 0 我无法正确排序。

帮助。

【问题讨论】:

    标签: php laravel integer sql-order-by laravel-4.2


    【解决方案1】:

    您特别要求降序。降序是从高到低。

    将“desc”更改为“asc”。

    【讨论】:

    • 这是正确的升序。 0 是 1 之前的数字。您不希望 0 出现吗?
    • “当然不是”?这不是不言自明的事情。你需要更清楚你在问什么。我不会假设您未指定的用例。将-&gt;where($order, '&lt;&gt;', 0) 添加到您的条件链中。
    • 好的。道歉。我的确切用例是: 1,2,3,4,0,0,0,0,0 。我知道这不是正确的升序,但我想为特定产品设置数字,其余产品应在其后列出。
    【解决方案2】:

    我会推荐使用 PHP,但如果你真的想在 MySQL 级别做,那么这里有一个示例

    从测试 t1 中选择 * 按数字排序 = 0,数字;

    创建表test ( id int(11) 无符号非空 AUTO_INCREMENT, number int(11) 非空, 主键 (id) ) ENGINE=InnoDB 默认字符集=latin1;

    插入test (id, number) 价值观 (1, 1), (2, 2), (3, 0), (4, 4), (5, 0);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多