多对多 Eloquent
Many to many Eloquent
好的,所以我尝试了您的答案,我可以 return 与用户相关联的发票,但我无法在该发票中获取产品,我只想获取与用户相关联的产品及其产品的发票。
如果我提到创建产品的用户的 ID 和发票的 ID,我希望查询 return 我的发票以及与提到的用户 ID 关联的产品。
当我使用这个时 :
$Invoices = Commande::find(1)->whereHas('Product', function($query){
return $query->where('products.user_id', 3);
})->with('Product')->get();
我只得到发票。
但我想要发票和发票中与特定用户关联的产品。
这就是 whereHas()
方法的用武之地。你应该能够做这样的事情:
$user = User::find($userId); // Let's assume `$userId` is `1`
$invoices = Invoice::whereHas('products', function ($query) use ($user) {
return $query->where('products.user_id', $user->id);
})->get();
这将 return 与 $user
记录相关联的所有 Invoice
记录 return 由 User::find($userId)
编辑(同样,在这种情况下,user_id: 1
)
您可以在此处查看完整文档:
https://laravel.com/docs/9.x/eloquent-relationships#querying-relationship-existence
注意:您可能需要调整我在上面代码中使用的 model/relationship 名称以满足您的需要,但基本思想保持不变。
您可以使用此查询来获取属于特定用户的发票及其产品
// my user id is currently authenticated, user
Invoice::query()->where('user_id', auth()->user()->id)->with('products')->paginate();
好的,所以我尝试了您的答案,我可以 return 与用户相关联的发票,但我无法在该发票中获取产品,我只想获取与用户相关联的产品及其产品的发票。
如果我提到创建产品的用户的 ID 和发票的 ID,我希望查询 return 我的发票以及与提到的用户 ID 关联的产品。
当我使用这个时 :
$Invoices = Commande::find(1)->whereHas('Product', function($query){
return $query->where('products.user_id', 3);
})->with('Product')->get();
我只得到发票。
但我想要发票和发票中与特定用户关联的产品。
这就是 whereHas()
方法的用武之地。你应该能够做这样的事情:
$user = User::find($userId); // Let's assume `$userId` is `1`
$invoices = Invoice::whereHas('products', function ($query) use ($user) {
return $query->where('products.user_id', $user->id);
})->get();
这将 return 与 $user
记录相关联的所有 Invoice
记录 return 由 User::find($userId)
编辑(同样,在这种情况下,user_id: 1
)
您可以在此处查看完整文档:
https://laravel.com/docs/9.x/eloquent-relationships#querying-relationship-existence
注意:您可能需要调整我在上面代码中使用的 model/relationship 名称以满足您的需要,但基本思想保持不变。
您可以使用此查询来获取属于特定用户的发票及其产品
// my user id is currently authenticated, user
Invoice::query()->where('user_id', auth()->user()->id)->with('products')->paginate();