Laravel-admin中select选择项包含大量数据

羊光辉
2023-12-01

常见用法:

// 性别 1-男 2-女
$form->select('sex', '性别')->options([1 => '男', 2 => '女'])->default(1);

搜索输入框:(包含大量数据,不适合一次请求插入)
routes定义:

$router->get("select_name", 'Test\TestController@selectName')->name('select_name');

过滤器,表单内使用:

$form->select('name', '姓名')->options()->ajax('/select_name');

接口:

	//搜索用户姓名
    public function selectName(Request $request) {
    	//select框输入内容(用户姓名),q是固定值不需要变
        $name = $request->input('q');
        if ($name == '') return response()->json([]);
        //查询结果
        $list = DB::where('name', 'like', '%' . $name . '%')
                        ->paginate(null, ['id', 'name'])
                        ->toArray();
        return response()->json($list);
    }

查询结果$list的数据类型:

/*
array (size=12)
	'current_page' => int 1
	'data' =>
		array (size=15)
			0 =>
				array (size=2)
					'id' => int 1
					'text' => string '张1' (length=20)
			1 =>
				array (size=2)
					'id' => int 2
					'text' => string '张2' (length=21)
			...
			
			14 =>
				array (size=2)
					'id' => int 15
					//text不要变
					'text' => string '张15' (length=24)
	'first_page_url' => string 'http://test.cn/select_name?page=1' (length=51)
	'from' => int 1
	'last_page' => int 390
	'last_page_url' => string 'http://test.cn/select_name?page=390' (length=53)
	'next_page_url' => string 'http://test.cn/select_name?page=2' (length=51)
	'path' => string 'http://test.cn/select_name' (length=44)
	'per_page' => int 15
	'prev_page_url' => null
	'to' => int 15
	'total' => int 5848
*/
 类似资料: