2014-12-04 45 views
7

我正在開發一個項目,其中有一個包含buyer_id列和seller_id列的表市場。當賣家在市場上投放某種東西時,seller_id和buyer_id是相同的,這意味着該產品現在正在銷售。出售後,buyer_id更改爲購買產品的人。在laravel中找到兩個具有相等數值的列,通過Eloquent?

現在在我的應用程序,其中我顯示所有產品待價而沽我通過機鋒這樣的查詢地點:

$market_records = Market::where('seller_id', '!=', Auth::user()->id)->where('seller_id', '=', 'buyer_id')->get(); 

我想不僅是產品推售其由同一用戶不誰已經登錄,我只想要那些seller_id和buyer_id相同的產品。現在第二個where聲明中的問題是,它將seller_id與字符串'buyer_id'進行比較,這不是我想要的。我只能獲取buyer_id等於seller_id的記錄的方式是什麼。

回答

13

您需要使用whereRaw做到這一點:

$market_records = Market::where('seller_id', '!=', Auth::user()->id)->whereRaw('seller_id = buyer_id')->get(); 
+0

工程就像一個魅力。謝謝。 – Rohan 2014-12-04 10:12:13

3

選項1:->whereRaw('column1 = column2')

選項2:當銷售buyer_id == NULL = seller_id,->where('buyer_id', '=', null)

+0

外鍵不能爲空 – Rohan 2014-12-04 10:11:22

+0

它們可以是1,而買方1可以是虛擬的。這個想法是它的一個標準值。 – 2014-12-04 10:13:26

2

近Laravel您可以使用的版本whereColumndocs):

$same = Market::whereColumn('seller_id', 'buyer_id')->get(); 
相關問題