Table pivot en laravel
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 ).
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 ...
}
}
Vous ne pouvez pas répondre à ce sujet.