php - 来自动态数组输入的 Laravel 多个 orderBy

标签 php laravel

我正在尝试将 orderBy 子句动态添加到查询中。

我尝试过的

$sort = Input::get('sort');

// Ex. of $sort below  
// Could be more or less key / values depending on user input
"category" => "asc",
"created_at" => "desc",
"email" => "asc",
"title" => "asc"

// I need to chain multiple orderBy's to a query
// but I can't use foreach in the laravel query
foreach ($sort as $key => $value) {
  echo "->orderBy(\"$key\", \"$value\")";
}

有没有办法将多个 orderBy 链接到现有查询?或者在创建查询期间将它们链接起来的方法?

我正在使用 Bootgrid并尝试利用它的多分类功能。

代码更新

这会产生一个状态码 500。

$advertisements = DB::table('advertisements')
                    ->get();

foreach ($sort as $key => $value) {
    $advertisements->orderBy($key, $value);
}

最佳答案

是的,您可以在创建查询对象后向其添加内容,如下所示:

<?php
$query = DB::table('advertisements');
foreach (Input::get('sort') as $key => $value) {
    $query->orderBy($key, $value);
}
$advertisements = $query->get();

关于php - 来自动态数组输入的 Laravel 多个 orderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993441/

相关文章:

php - 如何在 laravel 中保存生成的二维码?

javascript - 即使我在元标记中提到它,也找不到 CSRF_TOKEN

php - 重定向网站但保留地址栏中的原始网址

php - UTF-8贯穿始终

php - 在 PHP 中运行 MySQL *.sql 文件

PHP/PDO - 循环数组并将其添加到数据库的最佳方法

javascript - 让 vue.js 2.0 与 Laravel 5.3 一起使用

php - 用于管理布局的 Laravel 主题

laravel - 在 null 上调用成员函数 setCookie()

php - 我如何使用 php 和 mysql 遍历结果并在每天更改时显示一次星期几?