I am trying to add orderBy clauses to a query dynamically.
What I've tried
$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\")";
}
Is there a way to chain multiple orderBy's to an existing query? Or a way to chain them during the creation of the query?
I am using Bootgrid and trying to utilize it's multisort capabilities.
Code update
This is producing a status code 500.
$advertisements = DB::table('advertisements')
->get();
foreach ($sort as $key => $value) {
$advertisements->orderBy($key, $value);
}
Yes, you can add stuff to your query object after creating it like this:
<?php
$query = DB::table('advertisements');
foreach (Input::get('sort') as $key => $value) {
$query->orderBy($key, $value);
}
$advertisements = $query->get();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With