2017-07-14 10 views
1

これは私が必要とするすべてのテーブルを組み合わせたデータテーブルモデルで、VehicleNoがあいまいなこのコードではコンソールにエラーが見つかりました。DataTableモデルエラー

enter image description here

私はまた、あなたが複数のテーブルの列VehicleNoを持って

private function _get_datatables_query(){  
if($this->input->post('Status')) 
{               
    $this->db->where('Status', $this->input->post('Status')); 
} 
$this->db->select('*'); 
//$this->db->distinct('ApplicationNo'); 
$this->db->from($this->table); 
$this->db->distinct(); 
$this->db->join('user', 'user.userId = loanapplication.userId');; 
$this->db->join('collateraldetails', 'collateraldetails.ApplicationNo = loanapplication.ApplicationNo'); 
$this->db->join('vehicleinformation', 'vehicleinformation.VehicleNo = collateraldetails.VehicleNo'); 
$this->db->join('loanrequest', 'loanrequest.ApplicationNo = loanapplication.ApplicationNo'); 
$this->db->join('loanapproval', 'loanapproval.RequestNo = loanrequest.RequestNo'); 
$this->db->join('paymentdetails', 'paymentdetails.ApplicationNo = loanapplication.ApplicationNo'); 
$this->db->join('loanpayment', 'loanpayment.PaymentId = paymentdetails.PaymentId'); 
//echo $this->db->last_query();exit; 

$i = 0; 

foreach ($this->column_search as $item) // loop column 
{ 
    if($_POST['search']['value']) // if datatable send POST for search 
    {  
     if($i===0) // first loop 
     { 
      // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND. 
      $this->db->group_start(); 
      $this->db->like($item, $_POST['search']['value']); 
     } 
     else 
     { 

      $this->db->or_like($item, $_POST['search']['value']); 
     } 

     if(count($this->column_search) - 1 == $i) //last loop 
      $this->db->group_end(); //close bracket 
    } 
    $i++; 
} 

if(isset($_POST['ApplicationNo'])) // here order processing 
{ 
    $this->db->order_by($this->column_order[$_POST['ApplicationNo']['0']['column']], $_POST['ApplicationNo']['0']['dir']); 
} 
else if(isset($this->ApplicationNo)) 
{ 

    $ApplicationNo = $this->ApplicationNo; 
    $this->db->order_by(key($ApplicationNo), $ApplicationNo[key($ApplicationNo)]); 
}} 
+0

[PHP&MYSQL:JOIN操作であいまいな列名を解決する方法は?](https://stackoverflow.com/questions/431391/php-mysql-how-to-resolve-ambiguous-column-names) -in-join-operation) – cwallenpoole

+3

メッセージは、エラーがWHERE句にあることを伝えます。あいまいさは、(VehicleNo)という名前の列への複数の参照が(結合内のすべてのテーブルの中で)見つかったことを意味し、あなたが必要とするものを具体的に参照する必要があります。これを行うには、必要なテーブルを追加するだけです:\ 'table \'。\ 'VehicleNo \' –

答えて

1

他のテーブルを複製文句を言わないようにApplicationNoと明確なApplicationNoで注文する必要があります。あなたはそれに参加し、どのテーブルからどこの条件で使用される列VehicleNoを指定しません。それがこのエラーです。

vehicleinformationのように指定する必要があります。 VehicleNo。また、テーブルエイリアスを使用する必要があります。

+0

私が思う問題は、dataTableがVehicleNo where節を事前に定義していることです。 $ this-> db-> group_start(); $ this-> db-> like($ item、$ _POST ['search'] ['value']); –

+1

'foreach($ this-> column_search $ item)'行を回避する必要があります。 $ itemには、キーのペア値または多次元配列を使用する必要があります。基本的な考え方は、テーブルから$ itemを指定することです。たとえば、 'foreach($ this-> column_search as $ table => $ item)'と '$ this-> db-> like($ item、$ _POST ['search '' '' '' '' '' '' '' '' ''); '' $ this-> db-> like($ table。$ item、$ _POST ['search'] ['value']) –

1

あなたが参照していると混乱しているため、テーブル内でエイリアスを使用するとあいまいです。

関連する問題