【发布时间】:2021-10-24 21:12:12
【问题描述】:
我有两个模型并将它们合并并尝试将它们与列的总和进行分组:
public function getCards()
{
$home_cards_games=Game::groupBy('home_club_id')->selectRaw(' home_club_id ,SUM(home_cards) as cards')->orderBy('cards','desc')->get();
foreach($home_cards_games as $home_cards_game){
$home_cards_game->club=$home_cards_game->homeclub->club;
unset($home_cards_game->homeclub);
}
$away_cards_games=Game::groupBy('away_club_id')->selectRaw(' away_club_id ,SUM(away_cards) as cards')->orderBy('cards','desc')->get();
foreach($away_cards_games as $away_cards_game){
$away_cards_game->club=$away_cards_game->awayclub->club;
unset($away_cards_game->awayclub);
}
现在我合并了 $home_cards_games 和 $away_cards_games 两个模型:
$all_cards=collect();
foreach($home_cards_games as $home_cards_game){
$all_cards->push($home_cards_game);
}
foreach($away_cards_games as $away_cards_game){
$all_cards->push($away_cards_game);
}
return $all_cards;
}
返回结果是这样的:
[
{
"home_club_id": 52,
"cards": 2,
"league": "Serie A",
"club": "Udinese"
},
{
"home_club_id": 39,
"cards": 0,
"league": "LaLiga Santander",
"club": "Mallorca"
},
{
"home_club_id": 2,
"cards": 0,
"league": "Premier League",
"club": "Man Utd"
},
不,我想按俱乐部对收藏进行分组并将它们相加,我这样做了:
$all_cards=$all_cards->groupBy('club')->selectRaw(' club ,SUM(cards) as card')->orderBy('card','desc')->get(); // error is here
我收到此错误:Method Illuminate\Support\Collection::selectRaw does not exist.
我该如何解决这个问题?
通知
当我打印返回类型时,打印:object
【问题讨论】:
标签: arrays laravel collections group-by merge