2014-12-04 42 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(); 
相关问题