2015-03-25 29 views
1

我需要以下sql語句來轉換爲Laravel Eloquent。嘗試了幾種方法,從字面上看失敗了將此SQL查詢作爲Elequent語句的最佳方法

SELECT * FROM `conversations` where `type` = 'open' 
AND `sender_id`=2 AND ((`deleted_by_sender` IS NULL) 
AND (`deleted_by_sender` IS NULL OR `deleted_by_receiver` IS NULL )) 
OR `receiver_id` = 2 AND ((`deleted_by_sender` IS NULL) 
AND (`deleted_by_sender` IS NULL OR `deleted_by_receiver` IS NULL )) 

在此先感謝您。

回答

1

可以執行你的雄辯以這種方式進行查詢,我假設你有一個名爲對話

Conversation::where('type', 'open') 
->where('sender_id', 2) 
->whereNull('deleted_by_sender') 
->where(function ($query) { 
    return $query->whereNull('deleted_by_sender') 
     ->orWhereNull('deleted_by_receiver'); 
})->orWhere('receiver_id', 2) 
->whereNull('deleted_by_sender') 
->where(function ($query) { 
    return $query->whereNull('deleted_by_sender') 
     ->orWhereNull('deleted_by_receiver'); 
})->get(); 

這些代碼是模型未經測試,直接從您的sql查詢翻譯

0

如果我理解正確的,你期待這樣的:

SELECT * FROM `conversations` 
WHERE `type` = 'open' 
    AND (`deleted_by_sender` IS NULL OR `deleted_by_receiver` IS NULL) 
    AND ((`sender_id`=2 AND `deleted_by_sender` IS NULL) 
     OR 
     (`receiver_id` = 2 AND `deleted_by_receiver` IS NULL) 
     )