ajax()) { $bootstrapTableIndexConfig = [ 'table' => 'store_work_centers', 'columns' => [ 'store_work_centers.id', 'stores.code AS stores_code', 'stores.name AS stores_name', 'store_work_centers.code', 'store_work_centers.name', 'store_work_centers.description', 'store_work_centers.manager_id', DB::raw("CONCAT_WS(' ', users.name, users.last_name) AS manager_name"), 'users.email AS manager_email', 'store_work_centers.tel', 'store_work_centers.tel2', 'stores.c_codigo_postal AS codigo_postal', 'sat_pais.descripcion AS pais', 'sat_estado.nombre_del_estado AS estado', 'sat_localidad.descripcion AS localidad', 'sat_municipio.descripcion AS municipio', 'sat_colonia.nombre_del_asentamiento AS colonia', DB::raw("CONCAT_WS(' ', COALESCE(stores.direccion, ''), COALESCE(stores.num_ext, ''), IF(stores.num_int IS NOT NULL, CONCAT('Int ', stores.num_int), '')) AS direccion"), 'store_work_centers.lat', 'store_work_centers.lng', 'store_work_centers.status', 'store_work_centers.created_at', 'store_work_centers.updated_at', ], 'joins' => [ [ 'table' => 'stores', 'first' => 'store_work_centers.store_id', 'second' => 'stores.id', 'type' => 'join', // INNER JOIN ], [ 'table' => 'sat_pais', 'first' => 'stores.c_pais', 'second' => 'sat_pais.c_pais', 'type' => 'leftJoin', // LEFT OUTER JOIN ], [ 'table' => 'sat_estado', 'first' => 'stores.c_estado', 'second' => 'sat_estado.c_estado', 'and' => [ 'stores.c_pais = sat_estado.c_pais', ], 'type' => 'leftJoin', ], [ 'table' => 'sat_localidad', 'first' => 'stores.c_localidad', 'second' => 'sat_localidad.c_localidad', 'and' => [ 'stores.c_estado = sat_localidad.c_estado', ], 'type' => 'leftJoin', ], [ 'table' => 'sat_municipio', 'first' => 'stores.c_municipio', 'second' => 'sat_municipio.c_municipio', 'and' => [ 'stores.c_estado = sat_municipio.c_estado', ], 'type' => 'leftJoin', ], [ 'table' => 'sat_colonia', 'first' => 'stores.c_colonia', 'second' => 'sat_colonia.c_colonia', 'and' => [ 'stores.c_codigo_postal = sat_colonia.c_codigo_postal', ], 'type' => 'leftJoin', ], [ 'table' => 'users', 'first' => 'store_work_centers.manager_id', 'second' => 'users.id', 'type' => 'leftJoin', ], ], 'filters' => [ 'search' => [ 'store_work_centers.code', 'store_work_centers.name', 'stores.code', 'stores.name', ], ], 'sort_column' => 'store_work_centers.name', // Columna por defecto para ordenamiento 'default_sort_order' => 'asc', // Orden por defecto ]; return (new GenericQueryBuilder($request, $bootstrapTableIndexConfig))->getJson(); } return view('vuexy-store-manager::work-center.index'); } public function ajax(\Illuminate\Http\Request $request) { $options = [ 'id' => $request->input('id', null), 'searchTerm' => $request->input('searchTerm', null), 'limit' => $request->input('limit', 20), 'keyField' => 'id', 'valueField' => 'custom_name', // Usamos un alias que agregaremos con DB::raw() 'responseType' => $request->input('responseType', 'select2'), 'filters' => [ 'store_id' => $request->input('store_id', null), ] ]; // Aquí añadimos la expresión de concatenación con un alias $query = StoreWorkCenter::query() ->select('store_work_centers.*', DB::raw("CONCAT_WS(' - ', code, name) AS custom_name")); return CatalogHelper::ajaxFlexibleResponse($query, $options); } }