2

这是我的表结构

用户

ID
用户名
密码

订单

ID
用户身份

订单详细信息

ID
product_id
order_id

关系已经确定

用户.php

function orders() {
    return $this->hasMany('Order');
}

订单.php

function details() {
    return $this->hasMany('OrderDetail');
}

OrderDetail.php

我得到了用户 ID 和产品 ID,我想检查用户是否购买了这个产品

User::find($userId)->orders()->details()->where('product_id', $productId)->count()会出错,因为订单返回的数据不止一个,怎么检查?

4

1 回答 1

1

你还不能用 Eloquent 轻轻一按。但是您可以轻松编写这样的函数来进行检查:

public function hasBoughtProduct($product_id, $user_id)
{

$orders = Orders::with('details')->where('user_id','=',$user_id)->get();

foreach($orders as $order)
{
    $details = $order->details()->where('product_id', '=', $product_id)->count();
    if($details > 0)
    {
          return TRUE;
    }    
}
return FALSE;
}

如果这对您的需求不够有效,您可以考虑使用 Fluent 编写查询或覆盖您将预先加入表的 newQuery() 方法。如果这更适合您,您可以参考此答案以获取有关如何操作的更多详细信息:https ://stackoverflow.com/a/19183957/385402

于 2013-10-07T12:20:01.813 回答