Príprava modelov
Trait HasComments pridajte všetkému, čo sa dá komentovať, a GivesComments všetkému, čo môže komentár napísať (typicky modelu User):
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Comments\Traits\HasComments;
use RoundlyConsulting\Comments\Traits\GivesComments;
class Post extends Model
{
use HasComments;
}
class User extends Model
{
use GivesComments;
}Čo jednotlivé traity pridávajú
| Člen | Trait | Účel |
|---|---|---|
comments() | HasComments | Všetky komentáre na modeli (MorphMany). |
approvedComments() | HasComments | Viditeľné a schválené komentáre najvyššej úrovne, zoradené podľa comments.order. |
threadedComments() | HasComments | Verejné vlákno: viditeľné a schválené komentáre najvyššej úrovne len s viditeľnými a schválenými odpoveďami, až po max_depth. |
loadCommentCount() | HasComments | Načíta comments_count — všetky viditeľné a schválené komentáre vrátane odpovedí. |
withCommentCounts() | HasComments | Scope, ktorý pridá ten istý verejný comments_count bez N+1. |
commentsLocked() | HasComments | Či je diskusia modelu zamknutá. |
writtenComments() | GivesComments | Všetky komentáre, ktoré model napísal (MorphMany). |
writeComment() | GivesComments | Napíše komentár na subjekt v mene tohto autora. |
$post->comments; // every comment on the post
$post->approvedComments; // visible + approved top-level comments, ordered per config
$post->threadedComments; // the public thread: visible + approved roots and replies
$post->commentsLocked(); // bool — is the post's comment section locked?
$user->writtenComments; // every comment the user authored
$user->writeComment($post, 'Great article!');Vlastný model Comment
Ak potrebujete ďalšie stĺpce, casty alebo správanie, nastavte comments.model na potomka pribaleného modelu Comment. Balík model vyhľadáva cez tento kľúč všade — pri zápise, vo vzťahoch, v odpovediach aj vo fluentnom query. Akákoľvek hodnota, ktorá nie je pribalený Comment ani jeho potomok — neexistujúca trieda, trieda, ktorá nie je model, či nesúvisiaci model —, vyhodí InvalidConfigurationException s názvom kľúča; balík sa nikdy potichu nevráti k pribalenému modelu:
namespace App\Models;
use RoundlyConsulting\Comments\Models\Comment as BaseComment;
class Comment extends BaseComment
{
// extra columns, casts, relations and behaviour
}
// config/comments.php
'model' => App\Models\Comment::class,Pribalený Comment už implementuje HasMedia, Likeable a Reportable a používa soft deletes — váš potomok tak zdedí páčiky, nahlásenia, prílohy aj všetko ostatné.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.