Odpovede vo vláknach
Odpoveď sa ukladá s pôvodným subjektom — takže ploché výpisy na článku fungujú ďalej — aj s odkazom parent_id na komentár, na ktorý odpovedá. Napíšete ju cez reply() v builderi alebo parent: v DTO:
use RoundlyConsulting\Comments\Facades\Comments;
$root = Comments::on($post)->as($alice)->body('Great article.')->post();
$reply = Comments::on($post)->as($bob)->reply($root)->body('Agreed.')->post();
$reply->parent_id === $root->id; // true
$reply->commentable->is($post); // true — a reply lives on its parent's subject
Comments::on($otherPost)->reply($root)->body('Nope')->post(); // throws InvalidCommentParentExceptionSubjekt odovzdaný do Comments::on() určuje rozsah: rodič, ktorý patrí inému subjektu — s iným id alebo iným morph typom pri rovnakom id — vyhodí InvalidCommentParentException, namiesto toho, aby sa odpoveď presunula k subjektu rodiča. Rovnaké pravidlo platí pre WriteCommentData odovzdané do write().
Čítanie vlákien
// Direct children of a comment (every status — filter before showing them publicly):
$comment->replies;
// The comment a reply answers:
$reply->parent;
// The public thread: visible + approved top-level comments, with only visible + approved
// replies eager-loaded (bounded by max_depth). A hidden, pending or visible(false) comment
// never loads, and neither does anything below it:
$post->threadedComments()->get();
// Every root with every reply, for a moderation view:
Comments::for($post)->rootsOnly()->withReplies()->get();
// Only top-level comments:
$post->comments()->whereNull('parent_id')->get();
$post->comments()->roots()->get();threadedComments() je verejné vlákno. withReplies() v query sa riadi viditeľnosťou query: pri query s visible() (v ľubovoľnom poradí) sa na každej úrovni načítajú len viditeľné a schválené odpovede; bez visible() sa načítajú všetky odpovede, ako pre moderátorský pohľad.
Limit hĺbky
Komentár najvyššej úrovne má hĺbku 1, jeho priama odpoveď hĺbku 2 atď. Odpoveď hlbšie ako comments.max_depth (predvolene 5) vyhodí MaxReplyDepthExceededException — mäkko zmazaný predok sa do hĺbky stále započítava. threadedComments() aj withReplies() v query načítajú vnorené odpovede po úrovniach až po max_depth, takže aj hlboké vlákno sa načíta pevným počtom dotazov.
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.