Как создать динамический запрос MySQL в Laravel? - PullRequest
0 голосов
/ 10 июня 2019

Я бы хотел, чтобы пользователи выбирали, какие поля они хотят видеть, а какие нет. Это мой API URI, который является запросом get.

/api/v1/admin/users/1?fields=email,id

Это мой код:

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();
        }

но я получил эту ошибку:

"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)"

Любая помощь (или если кто-то может указать мне хороший учебник) будет принята с благодарностью! Спасибо

Ответы [ 3 ]

2 голосов
/ 10 июня 2019

В laravel вы можете добавить запрос с предложением where().Но в твоем случае.Это не обязательно.

Просто запустите это.

if (isset($request->fields)) {
        $users = User::select(DB::raw($request->fields))->get();
        dd($users);
}

0 голосов
/ 10 июня 2019

Откуда берется $resourceOptions['fields']?

Вы можете использовать массив элементов в функции select, например:

if (isset($request->fields)) {
    $items = explode(',', $request->fields);
    $query = User::query();
    $query->select($items);
    $query->get();
}

Или вот так

if (isset($request->fields)) {
    $query = User::query()->select(explode(',', $request->fields))->get();
}
0 голосов
/ 10 июня 2019

импорт

use Illuminate\Support\Facades\DB;

и

if (isset($request->fields)) {
    $query = User::select(DB::raw($request->fields))->get();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...