我有以下表格
以及关系
我想获得购买的已售产品。所以我的查询就像这样
$purchase = Purchases::with(['product','product.sale' => function ($query){
return $query->where('status','complete');
}])->find($request->id);
我的问题是在销售表中检查状态了吗?如果没有,那么没有使用原始查询有什么办法我可以检查销售表中的以下条件吗?
答案 0 :(得分:0)
您可以按以下方式解决:
$purchase = Purchases::with('product')->whereHas('product.sale',function ($query){
$query->where('status','complete');
})->find($request->id);
答案 1 :(得分:0)
从关系中检索相关模型时,将使用您应用于 $ query 对象的约束。在上面的代码中,您可以在检索 sale 关系时应用约束。因此,您将获得:
如果您只想获得与status = complete有销售关系的产品,则需要为产品关系提供约束,而不是 product.sale 。以下将解决这个问题:
$purchase = Purchases::with(['product' => function($productQuery) {
$productQuery->whereHas('sale', function($saleQuery) {
$saleQuery->where('status','complete');
});
}])->find($request->id);