Reputation: 375
I would like the users to choose which fields they want to see and which ones they don't.This is my API URI which is a get request.
/api/v1/admin/users/1?fields=email,id
This is my code :
if (isset($request->fields)) {
$temp = null;
$items = explode(',', $request->fields);
foreach ($items as $item) {
$temp = $temp . "'" . $item . "',";
}
$fields = trim($temp, ',');
$query = User::query();
$query->select($resourceOptions['fields']);
$query->get();
}
but I got this error:
"SQLSTATE[42S22]: Column not found: 1054 Unknown column ''email','id'' in 'field list' (SQL: select `'email','id'` from `users` where `users`.`deleted_at` is null)"
Any help (or if someone can point me towards a good tutorial) would be greatly appreciated! Thanks
Upvotes: 1
Views: 147
Reputation: 46
Where does $resourceOptions['fields']
comes from?
You can use the array of items in the select
function, like this:
if (isset($request->fields)) {
$items = explode(',', $request->fields);
$query = User::query();
$query->select($items);
$query->get();
}
Or like this
if (isset($request->fields)) {
$query = User::query()->select(explode(',', $request->fields))->get();
}
Upvotes: 0
Reputation: 500
import
use Illuminate\Support\Facades\DB;
and
if (isset($request->fields)) {
$query = User::select(DB::raw($request->fields))->get();
}
Upvotes: 0
Reputation: 3572
In laravel you can add query with where()
clause. But in your case. It's not required.
Just run this.
if (isset($request->fields)) {
$users = User::select(DB::raw($request->fields))->get();
dd($users);
}
Upvotes: 2