iT邦幫忙

0

請問以下SQL 語法如何正確轉成Laravel Models專用語法

  • 分享至 

  • xImage

請問大大以下MYSQL 語法中 AND A.name = B.name 如何添加到 Laravel Models專用語法內
SELECT *
FROM A
LEFT JOIN B ON A.id = B.id
AND A.name = B.name
WHERE A.sn = 27

小弟只會寫這樣
A::leftJoin('B', 'A.id', '=', 'B.id')
->where('A.SN',27)
->get();

這樣搜出來的會出現重複
如果再添加AND A.name = B.name
就能有效過濾

該如何添加進去Laravel內?

謝謝大大指教

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
Ray
iT邦大神 1 級 ‧ 2022-12-12 21:18:06
最佳解答

ChatGPT 人工智慧專家建議這樣寫:
https://ithelp.ithome.com.tw/upload/images/20221212/20026603px9JM24lIk.jpg

Ray iT邦大神 1 級 ‧ 2022-12-12 21:19:23 檢舉

反過來驗證一下, 看看上面講得對不對:
https://ithelp.ithome.com.tw/upload/images/20221212/20026603dqcXwPhxyh.jpg

用AI寫程式XD.......要來淘汰所有網站工程師XD...

Ray iT邦大神 1 級 ‧ 2022-12-12 21:26:21 檢舉

不過也別太相信 ChatGPT, 他沒答案的時候很會唬爛, 而且內容還唬得有模有樣, 可以把人騙得團團轉....

但是邏輯簡單, 語意清楚, 可在百行之內寫完的程式, 大部分都難不倒他, 他連遞迴 (Recursive) 的程式技巧都會用....

1

認真來說。

JOIN相關的用法都還不是正規 Laravel Models 真正的用法。
美其名只是在MODEL內自行跑原本內部使用的處理。
正確的Laravel Models,並不會直接使用到JOIN來做處理的。

但也因為如此,很多人已經習慣了SQL語法後。
突然想要換成ORM的寫法而腦袋打結。
畢竟其用法規則已經完成變得不一樣了

就你的例子而言
因該是 A B兩個MODEL。再其A MODEL內 husone 關聯到B。

class A extends Model
{
    ......
    
    public function B()
    {
        return $this->hasOne('App\Models\B', 'id', 'id');
    }
    
}

再取用 with 對應處理就好。

$aDb = A::with(['B'])->WHERE('SN',27)->get();
v60i iT邦新手 3 級 ‧ 2022-12-13 08:45:22 檢舉

謝謝大大的提點
原來是要這樣想才是對的
小弟受益
再延伸請問要在JOIN中加AND A.name = B.name
正確的ORM 該如何表示呢?

v60i iT邦新手 3 級 ‧ 2022-12-13 16:42:12 檢舉

我搞懂Laravel Models
怎麼用AND A.name = B.name了
謝謝大大的指導

我要發表回答

立即登入回答