Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel中生成动态mysql查询?_Php_Laravel - Fatal编程技术网

Php 如何在laravel中生成动态mysql查询?

Php 如何在laravel中生成动态mysql查询?,php,laravel,Php,Laravel,我想让用户选择他们想看到哪些字段,哪些不想看到。这是我的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) {

我想让用户选择他们想看到哪些字段,哪些不想看到。这是我的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)"
任何帮助(或者如果有人能给我指出一个好的教程)都将不胜感激!
谢谢

在laravel中,您可以使用
where()
子句添加查询。但对你来说。这不是必需的

运行这个

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


在laravel中,可以使用
where()
子句添加查询。但对你来说。这不是必需的

运行这个

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

进口

use Illuminate\Support\Facades\DB;

进口

use Illuminate\Support\Facades\DB;


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

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

@Maryam让我知道它是否有用。我测试过,但没有true@Maryam现在试试。我认为他把请求传错了方向<代码>'email','id'看看这个。@Maryam让我知道它是否有用。我测试过,但没有true@Maryam现在试试。我认为他把请求传错了方向<代码>'email','id'看看这个。