Laravel 5,orderByRaw使用字段和列不存在

时间:2017-05-31 20:28:26

标签: database laravel eloquent laravel-query-builder

当我使用orderByRaw函数时,我遇到Eloquent / QueryBuilder的问题我得到异常列不存在,但该列已存在于数据库中。

以下是例外:

$orderedStatuses = implode(',', [4]);
$users->orderByRaw(\DB::raw("FIELD(status, $orderedStatuses)"));

进入数据库的status列是整数。 这是我的代码:

DELIMITER $$
CREATE TRIGGER Total
BEFORE INSERT ON `despesas` FOR EACH ROW
BEGIN
    SET Total = Abertura_Processo+Telefone+Correspondencia+Cartorio+Conservatorio+Servico_Financas+Taxas_Emolumentos+Honorarios;
END;
$$
DELIMITER ;

...另外,如果我使用users.status,我也会遇到同样的错误。

有人可以帮助我吗?

由于

2 个答案:

答案 0 :(得分:1)

你混合了两种方法。

$users->orderBy(\DB::raw("FIELD(status, $orderedStatuses)"));

或者

$users->orderByRaw("FIELD(status, $orderedStatuses)");

答案 1 :(得分:0)

orderByRaw期望原始SQL,你必须在orderByRaw的参数中传递字符串。

示例:

$users->orderByRaw('field1 ASC, field2 DESC, field3 DESC,...');