2016-08-03 113 views
-1

这是我的我的查询代码:MySQL的 - SQLSTATE [42S22]:列未找到:1054未知列

$payments = DB::table('payments') 
        ->join('invoices', 'invoices.id', '=', 'payments_invoices.invoice_id') 
        ->join('payments_invoices', 'payments.id', '=', 'payments.payment_id') 
        ->leftJoin('clients', 'clients.id', '=', 'payments.client_id') 
        ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') 
        ->where('payments.account_id', '=', Auth::user()->account_id) 
        ->where('payments.is_deleted', '=', false) 
        ->where('invoices.is_deleted', '=', false) 
        ->where('clients.is_deleted', '=', false) 
        ->where('contacts.deleted_at', '=', null); 

当我试图显示此查询的结果它给了我:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'payments_invoices.invoice_id' in 'on clause' (SQL: select `payments`.`payment_date`, `payments`.`amount`, `invoices`.`public_id`, `invoices`.`invoice_number`, `clients`.`name` as `client_name`, `contacts`.`email`, `contacts`.`first_name`, `contacts`.`last_name`, `clients`.`currency_id`, `clients`.`public_id` as `client_public_id`, `clients`.`user_id` as `client_user_id` from `payments` inner join `invoices` on `invoices`.`id` = `payments_invoices`.`invoice_id` inner join `payments_invoices` on `payments`.`id` = `payments`.`payment_id` left join `clients` on `clients`.`id` = `payments`.`client_id` left join `contacts` on `contacts`.`client_id` = `clients`.`id` where `payments`.`account_id` = 1 and `payments`.`is_deleted` = 0 and `invoices`.`is_deleted` = 0 and `clients`.`is_deleted` = 0 and `contacts`.`deleted_at` is null and `contacts`.`is_primary` = 1 order by `payments`.`payment_date` desc limit 50) 

知道此查询工作正常:

$query = DB::table('payments') 
        ->join('accounts', 'accounts.id', '=', 'payments.account_id') 
        ->join('clients', 'clients.id', '=', 'payments.client_id') 
        ->join('invoices', 'invoices.id', '=', 'payments_invoices.invoice_id') 
        ->join('payments_invoices', 'payments.id', '=', 'payments.payment_id')      
        }) 
        ->leftJoin('payment_types', 'payment_types.id', '=', 'payments.payment_type_id') 
        ->where('clients.is_deleted', '=', false) 
        ->where('payments.is_deleted', '=', false) 
        ->where('invitations.deleted_at', '=', null) 
        ->where('invoices.deleted_at', '=', null) 
        ->where('invitations.contact_id', '=', $contactId) 
        ); 

我该怎么办?请

+0

包括你的表定义 – jonju

+0

支付( '身份证', 'ACCOUNT_ID', 'CLIENT_ID', '量', 'USER_ID', 'PAYMENT_DATE') –

回答

1

此行

->join('payments_invoices', 'payments.id', '=', 'payments.payment_id') 

不作sense.You尝试加入使用领域从表itself.So也许你想加入的payments_invoices.payment_id

这时可以尝试更改顺序的另一个表在其中加入表

$payments = DB::table('payments') 
        ->join('payments_invoices', 'payments.id', '=', 'payments_invoices.payment_id') 
        ->join('invoices', 'invoices.id', '=', 'payments_invoices.invoice_id') 

        ->leftJoin('clients', 'clients.id', '=', 'payments.client_id') 
        ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') 
        ->where('payments.account_id', '=', Auth::user()->account_id) 
        ->where('payments.is_deleted', '=', false) 
        ->where('invoices.is_deleted', '=', false) 
        ->where('clients.is_deleted', '=', false) 
        ->where('contacts.deleted_at', '=', null); 
+0

仍然无法使用列未找到:1054未知列'payments.payment_id' –

+0

检查我的更新答案。 –

+0

谢谢天才!它工作正常:* –

0

基地从查询:

$payments = DB::table('payments') 
        ->join('invoices', 'invoices.id', '=', 'payments_invoices.invoice_id') 
        ->join('payments_invoices', 'payments.id', '=', 'payments.payment_id') 

要加入paymentsinvoices表。并且您的on子句如下所示:ON invoices.id = payments_invoices.invoice_id

但是payments_invoices表仅在下一行中加入。

只需更正paymentsinvoices表(如果存在)之间的关系,那么它很好。

由于paymentsinvoices是许多一对多:试试这个:

DB::table('payments') 
       ->join('payments_invoices', 'payments.id', '=', 'payments_invoices.payment_id') 
       ->join('invoices', 'invoices.id', '=', 'payments_invoices.invoice_id') 

如果你payments_invoices表有payments_id列。

+0

但是OP在她的工作查询中使用相同的payment.payment_id – jonju

+0

'payments_invoices'表是一个连接表,它在'invoices'和'payments'表中加入 –

+0

加入必须先到达。 'payments_invoices.invoice_id'已被使用,但'payments_invoices'尚未加入 – KaeL

相关问题