Thinkphp6中where條件中字段與字段比較條件的寫法

今天進行系統測試的時候忽然發現原來寫好的效果不正常了,仔細排查了全部代碼發現以下:ide

StorePink::where('id',1)->whereColumn('pinkAccount','<','people')->inc('pinkAccount')->update()測試

這段代碼是做用是查找StorePink表中的列pinkAccount是否小於people,可是這段代碼打印出來的語句是:code

SELECT * FROM StorePink WHERE id='1' AND `pinkAccount < people LIMIT 1
ThinkPHP解析出來的時候把原來的字段people解析成了字符串了,因此該語句報錯。字符串

解決方法

1 正確的寫法以下

你們注意看下兩段代碼where條件分別是:it

where('pinkAccount','>','people') //這裏字段與字段之間用 > 隔開,表示>後面的是字段值而非字段class

where('pinkAccount',' > people') //這裏把 > 與後面的字段寫在了一塊兒,即字段與字段之間的比較date

2 使用關鍵詞whereColumn(此方法在ThinkPHP6的用戶手冊中找到)

StorePink::where('id',$order['pink_id'])->whereColumn('pinkAccount','<','people')->inc('pinkAccount')->update()方法

生成的SQL語句以下:di

SELECT * FROM StorePink WHERE ( pinkAccount > people )view

相關文章
相關標籤/搜索