编辑:我通过我在此处找到的自定义SSP类替换SSP类找到了解决方案:https://github.com/emran/ssp
我不知道这是否是一个可以理解的标题,但这是我的问题:
我有一个需要插入数据表的DB表(称为项目)。使用ServerSide拨打电话并在数据表中获取结果我没有问题。
但是,对于每个项目(每行),都有一个项目创建者(项目DB表中的列creator_id)。我需要做的是每次从项目DB表中获取一行时,向创建者DB-table发出请求以获取创建者的名字/姓氏。这有道理吗?
以下是我使用的代码:
$table = 'projects';
$primaryKey = 'project_id';
$columns = array(
array(
'db' => 'project_id',
'dt' => 'DT_RowId',
'formatter' => function( $d, $row ) {
return $d;
}
),
array( 'db' => 'creator_id',
'dt' => 'creator',
'formatter' => function( $d, $row ) {
// Here I need to make a call to the creators DB-table and return the $creator_name value
return $creator_name;
}
)
);
// SQL server connection information
$sql_details = array(
'user' => '',
'pass' => '',
'db' => '',
'host' => ''
);
require(BASE_DIR.'/lib/dataTables/ssp.class.php');
$result = SSP::simple($_GET, $sql_details, $table, $primaryKey, $columns);
答案 0 :(得分:0)
您可以使用formatter
属性创建单独的SQL查询,但会通过增加脚本响应时间来大大影响性能。
相反,当您使用ssp.class.php
子查询而不是表名来使用GROUP BY
,JOIN
等时,您可以使用以下技巧。
<?php
$table = <<<EOT
(
SELECT projects.project_id, creators.creator_id, creators.creator_name
FROM projects
LEFT JOIN creators ON projects.creator_id=creators.creator_id
) t
EOT;
$primaryKey = 'project_id';
$columns = array(
array(
'db' => 'project_id',
'dt' => 'DT_RowId'
),
array(
'db' => 'creator_id',
'dt' => 'creator'
),
array(
'db' => 'creator_name',
'dt' => 'creator_name'
)
);
// SQL server connection information
$sql_details = array(
'user' => '',
'pass' => '',
'db' => '',
'host' => ''
);
require(BASE_DIR.'/lib/dataTables/ssp.class.php');
$result = SSP::simple($_GET, $sql_details, $table, $primaryKey, $columns);
echo json_encode($result);
要使用该技巧,您还需要修改ssp.class.php
并将FROM `$table`
的所有实例替换为FROM $table
以删除反引号。
或者,库github.com/emran/ssp存储库扩展ssp.class.php
,允许GROUP BY
,JOIN
,别名。
有关详细信息,请参阅jQuery DataTables: Using WHERE, JOIN and GROUP BY with ssp.class.php。