我需要创建一个管理足球表的应用程序
我实际上有一张桌子,存储着两支球队的比赛
match :
-id
-dt_math
-club_home_id
-club_visitor_id
每个团队都有一张表来创建球员列表。
所以我做了什么,我创建了表match_sheet来存储团队的两个表。
match_sheet :
-id
-match_id
为了将玩家存储在我创建的表match_sheet_player的每张纸上
match_sheet_player:
-id
-match_sheet_id
-player_id
现在,我只需要显示在我的视图中同时包含两个表的匹配项即可。而且我不知道该如何实现。
我进行的第一个查询是:
$matchs_sheets = MatchSheet::all();
$matchs = Match::whereIn('id', $matchs_sheets->pluck('match_id'))->orderByDesc('dt_match')->paginate(5);
但是即使有一张纸但没有两张纸,这也会返回我的比赛。如果有两张纸,我真的需要显示匹配的onyl。
更新:
这是我的math_sheet数据 有两个记录为1659。1659是匹配项的ID。所以我只想显示比赛1659,而不是1649,因为这场比赛只有一条记录
答案 0 :(得分:1)
假设模型关系正确设置,则只有在相关模型的计数至少为2时,才可以使用has()
要求Laravel获取匹配项。例如:
$matches = Match::whereIn('id', $ids)->has('matchSheet', '=', 2)...
您的关系应设置为例如这个:
// on Match model
public function matchSheets()
{
return $this->hasMany(MatchSheet::class);
}
// on MatchSheet model
public function match()
{
return $this->belongsTo(Match::class);
}
此处的文档:https://laravel.com/docs/5.6/eloquent-relationships#one-to-many-我真的建议您仔细阅读它们,它们最终将为您节省大量时间!