2015-10-20 47 views
2

我想在laravel的雄辯orm中使用子查詢,並且有很多示例,但我的場景有所不同。 Laravel雄辯的ORM集中在模型(每個表都有一個模型),但我的查詢是這樣的Laravel - 雄辯的子查詢選擇與模型場景無關

SELECT * FROM (Select * FROM Table Where id <> 12) t WHERE phone = '123456' Or email = '[email protected]' 

所以基本上我爲什麼要做這個?我要檢查/讓所有的行,其中電話是123456或電子郵件[email protected] EXCEPT行其中id是。我應該使用什麼方法?

+0

我在現在(使用orientdb)文檔數據庫,這就是爲什麼我就是這麼做的。如果有更好的方法來做這個可以適合於雄辯模型的mysql查詢。我將不勝感激。 – Noobish

+2

爲什麼不只是從表中選擇*(電話='123456'或email ='example')和id <> 12'? – patricus

+0

@patricus,謝謝隊友,這個查詢幫了我。如果你可以在答案中寫一點解釋,說明爲什麼這個子查詢不能用於雄辯。所以我將其標記爲答案 – Noobish

回答

1

您正在編寫原始SQL查詢,這與Laravel的Eloquent ORM/Query Builder相關性不大。

下面的語句是雄辯的版本,如果你想選擇所有的行,其中手機是123456或發送電子郵件是[email protected]除了行其中id是12:

MyModel::where('phone', '12345')->orWhere('email', '[email protected]')->whereNotIn('id', [12])->get(); 

在一個側面注意,whereNotIn接受一個數組作爲參數,所以你也可以這樣寫:

whereNotIn('id', [1, 2, 3])

+0

感謝您提供的乾淨解決方案 – Noobish