Le plus simple est de faire une table Saisons, dans laquelle tu mets "Saison 1", "Saison 2" etc, pour chaque série, et au lieu de boucler les épisodes dans ta liste, tu boucles les saisons et tu affiches les épisodes fils.
Grosso-modo, la représentation basique de ta base ressemblerait à ça :
series:
id, name
seasons:
id, name, serie_id
episodes:
id, name, number, season_id, date, is_read
Comme ça tu fais un $this->Serie->find('all'); (en oubliant pas de rajouter les conditions et les contains pour ne pas trouver des champs inutiles) pour ta boucle, et dans ton tableau quelque chose du genre :
<?php foreach($serie as $serie): ?>
<table>
<thead>
<tr>
<th colspan="5"><?php echo $serie'Serie']'name']; ?></th>
</tr>
</thead>
<tbody>
<?php foreach($serie'Season'] as $season): ?>
<tr>
<td colspan="5"><?php echo $season'name']; ?></td>
</tr>
<?php foreach($season'Episode'] as $episode): ?>
<tr>
<td><?php echo $episode'number']; ?></td>
<td><?php echo $episode'name']; ?></td>
<td><?php echo $episode'date']; ?></td>
<td><?php echo $episode'is_read']; ?></td>
<td>... liens ...]</td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
</tbody>
</table>
<?php endforeach; ?>
C'est pas la façon la plus élégante de faire, mais ça te donne une piste.