我有一個問題,我的查詢中的where子句不受尊重。這是我使用的查詢:Where子句不被尊重?
Capsule::table('tblhosting')
->select('*','tbldomains.nextduedate as domainnextduedate' , 'tblhosting.nextduedate as hostingnextduedate')
->join('tblclients', 'tblhosting.userid', '=', 'tblclients.id')
->join('tbldomains', 'tblhosting.domain', '=', 'tbldomains.domain')
->where('tblhosting.nextduedate', '!=', 'tbldomains.nextduedate')
->where('tbldomains.status', '=', 'Active')
->where('tblhosting.termination_date', '=', '0000-00-00')
->get()
如果我做了vardump,我得到這些值:
[56] => stdClass Object
(
[id] => 406
[userid] => 9
[orderid] => 730
[packageid] => 35
[server] => 9
[regdate] => 2016-12-23
[domain] => xxx.net
[paymentmethod] => banktransfer
[firstpaymentamount] => 0.00
[amount] => 0.00
[billingcycle] => Annually
[nextduedate] => 2017-12-23
[nextinvoicedate] => 2017-12-23
[termination_date] => 0000-00-00
[completed_date] => 0000-00-00
[domainstatus] => Active
[domainnextduedate] => 2017-12-23
[hostingnextduedate] => 2017-12-23
)
正如你所看到的,tbldomains.nextduedate和tbldomains.nextduedate都是「2017- 12-23' ,所以他們不應該回來了,因爲我用
->where('tblhosting.nextduedate', '!=', 'tbldomains.nextduedate')
我想這可能是因爲我使用別名,但是當我嘗試
->where('domainnextduedate', '!=', 'hostingnextduedate')
我得到一個錯誤PDO:
Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'domainnextduedate' in 'where clause''
我不知道我錯過了什麼..
謝謝!
是否有可能的時間成分是不同的?此外,您將「0000-00-00」與日期進行比較的目的是什麼?這對我來說似乎毫無意義。 –
我已經檢查了結構,並且都是在標準'日期'合成器中。唯一的區別是對於1,默認值是0000-00-00,對於其他默認值是NULL。但這不應該有所作爲 我想你的意思是「where('tblhosting.termination_date','=','0000-00-00')」。如果該字段是0000-00-00,那麼託管軟件包不會被終止。如果它包含一個值,它將被終止。 – mitch2k
2個表中的'nextduedate'列的類型是什麼? –