这是我的表结构
用户
id username password
订单
id user_id
ORDER_DETAILS
id product_id order_id
关系已全部设定
user.php的
function orders() {
return $this->hasMany('Order');
}
Order.php
function details() {
return $this->hasMany('OrderDetail');
}
OrderDetail.php
我有用户ID和产品ID,我想检查用户是否购买了此产品
User::find($userId)->orders()->details()->where('product_id', $productId)->count()
会出错,因为订单会返回多个数据,如何进行检查?
答案 0 :(得分: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