Besoin d'aide ?

Table pivot en laravel

Avatar de SamD2g
SamD2g

bonjour jai une table pivot qui s'appelle chantLyric qui contient chant_id et lyric_id avec d'autres informations aussi. j'aimerai savoir comment faire pour faire la relation car dans le contrôleur j'arrive pas à les récupérer à partir du chant. j'aimerais que lorsque je récupère toute la table chant et que je les affiche j'aimerai pourvoir afficher les paroles aussi qui vont avec ,(un chant peu avoir plusieurs parole, oui c'est bizarre mais c'est le cas ).

Avatar de khalyomede
khalyomede

Bonjour, pour définir cette relation tu peux passer par un BelongsToMany qui répond bien à ton besoin car tu as une table pivot au milieu.

Ta table "Chant" devrait normalement définir cette relation :

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Chant extends Model
{
  use HasFactory;

  public function lyrics()
  {
    return $this->belongsToMany(Lyric::class, "chantLyric");
  }
}

Ensuite dans ton controlleur tu n'auras plus qu'à récupérer les chants et leurs lyrics, et boucler comme ceci :

namespace App\Http\Controllers;

use App\Models\Chant;

class ChantController extends Controller
{
  public function index()
  {
    $chants = Chant::with("lyrics")->get();

    foreach ($chants as $chant) {
      foreach ($chant->lyrics as $lyric) {
        dd($lyric);
      }
    }

    // Retourner la vue ...
  }
}
Posté il y a 8 mois

Vous ne pouvez pas répondre à ce sujet.