简体   繁体   English

我如何过滤具有一对多关系的数据透视表 - Laravel 7

[英]How can i filter pivot table with One to Many relation inside - Laravel 7

Tables

For example, i have 4 tables:例如,我有 4 个表:

Tables Diagram表格图

Models楷模

// PlacedBet
public function odds()
{
    return $this->belongsToMany(Odd::class, 'placed_bets_has_odds');
}
// Odd
public function placedBets()
{
    return $this->belongsToMany(PlacedBet::class, 'placed_bets_has_odds');
}
// Result
public function placedBetsOdds()
{
    return $this->hasMany(PlacedBetOdd::class);
}
// PlacedBetOdd
public function result()
{
    return $this->belongsTo(Result::class);
}

Issue问题

I want all PlacedBets where placed_bets_has_odds.result_id equal null.我想要所有 PlacedBets 其中 placed_bets_has_odds.result_id 等于 null。 But i don't know how can i do that with Eloquent in my PlacedBetRepository file.但我不知道如何在我的 PlacedBetRepository 文件中使用 Eloquent 做到这一点。

Thank you for your help感谢您的帮助

You can use whereDoesntHave to get null relationships.您可以使用whereDoesntHave来获取空关系。

PlaceBets::whereDoesntHave('results)->get();

But as @Naveed Ali has implied in the comment, you would need to place a results relationship in the PlaceBets model;但正如@Naveed Ali 在评论中暗示的那样,您需要在 PlaceBets 模型中放置结果关系;

public function results()
{
  return $this->belongsToMany(Result::class, 'placed_bets_has_odds');
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM