Relații Polimorfice cu morphTo() și morphMany() în Laravel

eloquent Laravel 11.x / Eloquent Q&A / Distribuie cod

Atașarea unui singur model (comentarii, imagini, taguri) la multiple tabele diferite folosind coloane de tip și ID polimorfice.

Sintaxă
return $this->morphTo() / return $this->morphMany(Comment::class, 'commentable');

O relație polimorfică permite unui model să aparțină mai multor tipuri diferite de modele folosind o singură tabelă de date. De exemplu, un model Comment poate fi atașat atât unui Post, cât și unui Video sau unui Product.

Tabela de comentarii folosește două coloane: commentable_id (ID-ul numeric) și commentable_type (clasa modelului sau alias-ul din Relation::enforceMorphMap).

Exemplu: Comentarii polimorfice pentru Postări și Clipuri Video
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\MorphMany;

class Comment extends Model
{
    public function commentable(): MorphTo
    {
        return $this->morphTo();
    }
}

class Post extends Model
{
    public function comments(): MorphMany
    {
        return $this->morphMany(Comment::class, 'commentable');
    }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Relații Polimorfice cu morphTo() și morphMany()

Ai o nelămurire despre utilizarea comenzii Relații Polimorfice cu morphTo() și morphMany() sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.