特定DataTable的输出必须在几个表上使用$(document).ready
来获取所需的数据。当我在DataTable的搜索框中输入任何内容时,我在尝试向远程服务器询问搜索结果时给出了错误LEFT JOIN
。
加载初始表AJAX请求的服务器端查询:
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous
当DataTables 1.10将其自动搜索过滤器添加到原始查询时,它会将其发送到PHP服务器端处理程序包select
orders.*,
orders.id as id,
order_items.*
left join order_items
orders.id on order_items.order_id
where
orders.store_id = 1
group by
orders.id
,然后将其添加到查询的yajra/laravel-datatables-oracle:3.0
部分并返回新的过滤结果。
在通过AJAX发送请求之前,如何强制DataTables(在jQuery端或PHP服务器端)将相关表名添加到搜索字段中?
答案 0 :(得分:1)
我遇到了类似的问题,并偶然找到了答案,虽然我知道这是一个老问题,但我认为我应该在这里发布答案。
在我的实例中,我有两个SQL表(Offices和Regions),每个表都有一个id字段。使用分页时,我会收到与您相同的错误。
要解决此问题,我需要在JavaScript的列上设置name属性。这样分页可以正常工作而没有任何问题。
dtbl = $('#tblReport').DataTable( {
columns: [
{ data: 'id', name: 'offices.id', visible: false },
{ data: 'name' }
],
"serverSide": true
});