Odpovede a citácie
Každá správa môže odpovedať na inú správu v tom istom vlákne. K odpovedi sa uloží odľahčená snímka citovanej správy, takže citácia prežije úpravu aj zmazanie pôvodnej správy:
use RoundlyConsulting\Messages\Facades\Messages;
$reply = Messages::to($thread)->from($bob)->replyingTo($original)->send('On it!');
$reply->parent; // the quoted message (relation)
$original->replies; // every reply to it
$reply->meta['quote']; // ['id', 'sender_id', 'sender_type', 'excerpt'] snapshotÚryvok v snímke je preview() rodičovskej správy skrátený na preview.length znakov (predvolene 120) — odpoveď na systémové oznámenie ho preto cituje tak, ako sa číta („Účastník Anna sa pripojil ku konverzácii.“), nikdy nie ako kľúč prekladu. Odpoveď na správu v inom vlákne — alebo na neexistujúcu správu — vyhodí MessageException::replyAcrossThreads(); odpoveď na správu, ktorej odoslanie autor už zrušil, vyhodí MessageException::alreadyDeleted().
Odpoveď cez akciu
sendMessageTo() v traite parameter pre odpoveď nemá; použite builder vyššie alebo odovzdajte parentMessageId akcii SendMessage:
use RoundlyConsulting\Messages\Actions\SendMessage;
use RoundlyConsulting\Messages\DataTransferObjects\SendMessageData;
app(SendMessage::class)->execute(new SendMessageData(
thread: $thread,
sender: $bob,
body: 'On it!',
parentMessageId: $original->getKey(),
));Zobrazenie odpovedí
MessageResource vystavuje objekt reply_to (id, excerpt, sender_id, sender_type) zostavený zo snímky a Pest expectation toBeReplyTo() overí vzťah v testoch. sender_type je názov triedy citovaného odosielateľa bez menného priestoru (User), zistený cez morph mapu — nikdy nie celý názov triedy; samotná snímka meta.quote si morph typ ponecháva.
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.