【发布时间】:2017-01-04 03:09:51
【问题描述】:
如何让 Datatables 服务器端处理 脚本与自定义查询一起工作?我需要从多个表中选择列并让 Datatables 呈现它们。
Datatables.net 使用 PHP 的服务器端处理 (SSP) 总结如下:https://datatables.net/examples/server_side/simple.html
我找到了这个SO question,但原始发帖人从未提供过他的解决方案。我没有足够的声誉要求他提供更多细节。
这是我没有使用 Datatable 的 SSP 的原始 SQL
SELECT tbl_houses.style, tbl_houses.roomCount, tbl_residents.firstName, tbl_residents.lastName
FROM tbl_houses, tbl_residents
WHERE tbl_houses.houseID = tbl_residents.residentID
/*
* # Equivalent query using JOIN suggested by @KumarRakesh
* # Note: JOIN ... ON is a synonym for INNER JOIN ... ON
* # Using JOIN conforms to syntax spec'd by ANSI-92 https://stackoverflow.com/a/894855/946957
*
* SELECT tbl_houses.style, tbl_houses.roomCount, tbl_residents.firstName, tbl_residents.lastName
* FROM tbl_houses
* JOIN tbl_residents ON tbl_houses.houseID = tbl_residents.residentID
*/
如何让 Datatables 使用 SSP 运行上述查询?
server_processing.php 似乎只接受 1 个表并且没有自定义过滤(即WHERE 子句)。
// DB table to use
$table = 'datatables_demo';
// Table's primary key
$primaryKey = 'id';
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* If you just want to use the basic configuration for DataTables with PHP
* server-side, there is no need to edit below this line.
*/
require( 'ssp.class.php' );
echo json_encode(
SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);
但是,ssp.class.php确实支持使用 WHERE 进行过滤。我想我需要修改ssp.class.php 以强制我的WHERE 子句
更新
找到了解决办法。有空会发帖。
【问题讨论】:
-
这种情况下你使用join查询了吗
-
你也可以这样做.. SELECT tbl_house.style, tbl_house.roomCount, tbl_residents.firstName, tbl_residents.lastName FROM tbl_house JOIN tbl_resident ON tbl_house.houseID = tbl_resident.residentID
-
@KumarRakesh 我试图弄清楚如何将自定义 SQL 查询塞进 Datatables 服务器端处理 (SSP) 脚本中。我的问题不是如何构建 SQL 查询,而是如何将其合并到服务器端的 Datatables 的 SSP“框架”中。
-
我想我必须将我的自定义过滤器(即 WHERE 子句)硬连接到
sss.class.php文件中。如果可行,将尝试然后发布更新 -
我为服务器端数据表开发了一个类,它依赖于 PDO 适配器,自从 6 年以来,我几乎在所有项目中都完美使用过,在看到你的问题后,我只是在 Github 上托管了这个,这里是链接如果它对您有帮助github.com/oromedialab/datatables 随时提出问题并尽我所能做出回应,它支持任何加入、groupby 等。
标签: php mysql datatables server-side