Laravel 5.4 Normal request

I have models: Player, Play, Download, Track

relationship:

Player has many Play and Download
Play and Download belongs to Player
Track has many Play and Download

I am trying to find a query that gives me a list of objects for a track:

Track 
--Player
----Plays
----Downloads
--Player
----Plays
----Downloads
--Player
----Plays
----Downloads

I use it in the vuejs data table component:

<data-tables
    :data='data.players' 
    >
    <el-table-column 
      prop="place_title">
    </el-table-column>
    <el-table-column
      prop="plays.length">
    </el-table-column>
    <el-table-column
      prop="downloads.length">
    </el-table-column>
</data-tables>

If it groupBycan work with Eloquent key objects, this will be almost what I need:

$plays = $track->plays()->whereYear('created_at', $year )->whereMonth( 'created_at', $month )->with('player')->get();
$players = $plays->groupBy('player');

But it groupByworks with string keys, so this does not help in my problem.

+4
source share
2 answers

plays() , , , , , , $plays - . ( $plays - Query Builder):

$plays = $track->plays()->whereYear('created_at', $year )->whereMonth( 'created_at', $month )->with('player');
$players = $plays->groupBy('player')->get();
+1

, , , - :

// Assumes you're already fetching the track e.g $track = Track::find($id);

$plays = $track->plays()->with('player')->get();
$plays = $plays->groupBy('player_id');

$downloads = $track->downloads()->with('player')->get();
$downloads = $downloads->groupBy('player_id');

- , . .

<h4>Track {{ $track->id }} Plays</h4>
<ul>
  @foreach ($plays as $play)
   <li>Player id:{{ $play[0]->player->id }} has played {{ count($play) }} times</li>
  @endforeach
 </ul>
<b>Total plays: {{ count($track->plays) }}</b>

<h4>Track {{ $track->id }} Downloads</h4>
<ul>
 @foreach ($downloads as $download)
  <li>Player id:{{ $download[0]->player->id }} has downloaded {{ count($download) }} times</li>
 @endforeach
</ul>
<b>Total downloads: {{ count($track->downloads) }}</b>
+1

Source: https://habr.com/ru/post/1680155/


All Articles