2014-12-04 31 views
7

Tôi đang làm việc trên một dự án mà tôi có một thị trường bảng có cột buyer_id và cột seller_id. Khi người bán đặt thứ gì đó trên thị trường, người bán_id và buyer_id giống nhau có nghĩa là sản phẩm đang được bán ngay bây giờ. Sau khi bán hàng, buyer_id thay đổi thành bất kỳ ai đã mua sản phẩm.Tìm hai cột trong laravel có giá trị bằng nhau thông qua Eloquent?

Bây giờ nơi trong ứng dụng của tôi, nơi tôi đang hiển thị tất cả các sản phẩm để bán Tôi đang làm truy vấn này qua hùng biện:

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

tôi muốn chỉ là sản phẩm để bán mà không phải là do cùng một người dùng người đã đăng nhập và tôi chỉ muốn có những sản phẩm mà seller_id và buyer_id giống nhau. Bây giờ vấn đề trong câu lệnh where thứ hai là rằng nó so sánh seller_id với chuỗi 'buyer_id' mà không phải là những gì tôi muốn. Cách mà tôi chỉ có thể lấy các hồ sơ mà người mua_id bằng seller_id.

Trả lời

13

Bạn cần phải sử dụng whereRaw để làm điều đó:

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

Hoạt động như một sự quyến rũ. Cảm ơn. – Rohan

3

Lựa chọn 1: ->whereRaw('column1 = column2')

Lựa chọn 2: Khi bán buyer_id == null = SELLER_ID, ->where('buyer_id', '=', null)

+0

Khóa ngoài không được để trống – Rohan

+0

Chúng có thể là 1 và người mua 1 có thể là giả. Ý tưởng là giá trị tiêu chuẩn của nó. –

2

Trong Laravel gần đây phiên bản bạn có thể sử dụng whereColumn (docs):

$same = Market::whereColumn('seller_id', 'buyer_id')->get(); 
Các vấn đề liên quan