DataTables AJAX搜索使用不明确的列

问题描述 投票:1回答:1

特定DataTable的输出必须在几个表上使用LEFT JOIN来获取所需的数据。当我在DataTable的搜索框中输入任何内容时,我在尝试向远程服务器询问搜索结果时给出了错误SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous

加载初始表AJAX请求的服务器端查询:

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

当DataTables 1.10将其自动搜索过滤器添加到原始查询时,它会将其发送到PHP服务器端处理程序包yajra/laravel-datatables-oracle:3.0,然后将其添加到查询的WHERE部分并返回新的过滤结果。

在通过AJAX发送请求之前,如何强制DataTables(在jQuery端或PHP服务器端)将相关的表名添加到搜索字段中?

jquery datatables datatables-1.10
1个回答
1
投票

我有一个类似的问题并且偶然找到答案,而我知道这是一个老问题,我以为我会在这里发布我的答案。

在我的实例中,我有两个SQL表(办公室和区域),两个都有一个id字段。使用分页时,我会收到与您相同的错误。

要解决这个问题,我需要在JavaScript中的列上设置name属性。这使得分页能够正常工作而没有任何问题。

     dtbl = $('#tblReport').DataTable( {
          columns: [
               { data: 'id', name: 'offices.id', visible: false },
               { data: 'name' }
          ], 
          "serverSide": true
     });
© www.soinside.com 2019 - 2024. All rights reserved.