Te recomendamos que pruebes esta respuesta en un entorno controlado antes de enviarlo a producción, saludos.
Solución:
SOLUCIÓN
Clase ssp.class.php
no admite uniones y subconsultas, pero hay una solución. El truco es usar una subconsulta como se muestra a continuación en $table
definición. Reemplazar table
con su nombre de tabla real en la subconsulta.
$table = << 'id', 'dt' => 0 ),
array( 'db' => 'name', 'dt' => 1 ),
array( 'db' => 'father_id', 'dt' => 2 ),
array( 'db' => 'father_name', 'dt' => 3 )
);
$sql_details = array(
'user' => '',
'pass' => '',
'db' => '',
'host' => ''
);
require( 'ssp.class.php' );
echo json_encode(
SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);
También necesitas editar ssp.class.php
y reemplazar todas las instancias de FROM `$table`
con FROM $table
para eliminar los acentos graves.
Asegúrese de que todos los nombres de columna sean únicos; de lo contrario, use AS
para asignar un alias.
NOTAS
También hay un repositorio github.com/emran/ssp que contiene ssp.class.php
apoyando JOIN.
ENLACES
Consulte jQuery DataTables: uso de WHERE, JOIN y GROUP BY con ssp.class.php para obtener más información.
TL;RD: Terminé usando una modificación de los Datatables originales. ssp.class.php
llamó ssp.php
implementado por Emran Ul Hadi: https://github.com/emran/ssp
Su modificación acepta JOIN, WHERE, GROUP BY y alias de columna. Aunque el archivo no se ha actualizado en más de un año, aún funciona con DataTables 1.12.x. Hice algunas modificaciones a su versión que aumentan su robustez y mejoran la documentación con ejemplos más claros.
Publicaré mis modificaciones/actualizaciones aquí cuando tenga un poco más de tiempo. Eventualmente, espero enviar una solicitud de extracción para obtener mis actualizaciones en su repositorio.
Parece que los scripts de DataTables no están diseñados para su caso de uso particular. Pero hay un método que permite personalizar las cláusulas where y al leer la fuente de ssp.class.php#complex, creo que esta configuración debería funcionar para usted usando el WHERE
método. los JOIN
El método no funcionará aquí.
Para resumir: edite su server_processing.php a eso:
'tbl_houses.style'],
[ 'db' => 'bl_houses.roomCount'],
[ 'db' => 'tbl_residents.firstName'],
[ 'db' => 'tbl_residents.lastName']
);
// connection details
$sql_details = [
];
$whereAll = 'tbl_houses.houseID = tbl_residents.residentID';
require( 'ssp.class.php' );
echo json_encode(
SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns , null, $whereAll);
);
los complex
método acepta su costumbre WHERE
cláusula. Pero lo complicado es el uso de 2 tablas. Esto es para lo que el guión no parece estar diseñado. Eché un vistazo a cómo está construyendo la consulta SQL final y parece que puede usar esto table_name.field_name
notación en la configuración, así como la table_name, table_name
notación para el $table
y $primaryKey
variables
Como se mencionó, el script DataTables no pretende el uso de 2 tablas. No sé si todas las funciones de DataTables funcionarán con eso.
Si te ha sido de utilidad nuestro post, sería de mucha ayuda si lo compartes con el resto juniors de esta manera contrubuyes a extender nuestro contenido.