---
title: "Reading submissions — Forms for Laravel | Roundly"
description: "Read submissions back as one keyed, typed answer set each — filtered by sender, uuid or review outcome — or fetch one by its uuid."
url: https://roundly-consulting.com/open-source/docs/forms-for-laravel/reading-submissions
language: en
---

[All packages](https://roundly-consulting.com/open-source.md)

[Forms for Laravel](https://roundly-consulting.com/open-source/docs/forms-for-laravel.md)

# Reading submissions

Forms::submissions($form) returns a fluent reader that assembles the per-field rows back into one keyed \[field\_key => value\] set per submission, in form order (groups, then fields, by order). Answers given to a field that was soft-deleted later are still read:

```php
$answers = Forms::submissions($form)
    ->forSender($user)   // optional
    ->latest()           // or ->oldest()
    ->get();             // Collection<AssembledSubmission>

$answers->first()->values;          // ['name' => 'Jane', 'email' => 'jane@example.com']
$answers->first()->value('name');   // 'Jane'
```

Drafts are excluded unless you call ->withDrafts(). Results are newest first by default. Narrow further by uuid or by review outcome — the reader is always scoped to its form, so another form’s uuid matches nothing:

```php
Forms::submissions($form)->whereUuid($result->uuid)->first(); // one submission
Forms::submissions($form)->pendingApproval()->get();          // awaiting review
Forms::submissions($form)->approved()->get();                 // or ->rejected()
```

## One submission by uuid

Forms::submission() addresses one submission — or draft — by the uuid submit() or draft() returned, or by its FormSubmission model. An unknown or malformed uuid throws SubmissionNotFoundException:

```php
$submission = Forms::submission($result->uuid);   // or Forms::submission($formSubmission)

$submission->uuid();         // the reference uuid
$submission->get();          // AssembledSubmission (a draft's values included)
$submission->model();        // the FormSubmission aggregate: status, sender, form
$submission->finalize();     // promote a draft
$submission->review();       // open a review (see Submission review)
```

## Reader and AssembledSubmission

```php
Forms::submissions($form)->withDrafts()->get();  // include unfinished drafts
Forms::submissions($form)->first();               // ?AssembledSubmission (newest)
Forms::submissions($form)->count();               // int

$answer = Forms::submissions($form)->first();

$answer->uuid;                  // submission reference id
$answer->values;                // [field_key => typed value]
$answer->value('email', 'n/a'); // a single answer, with a default
$answer->senderId;              // int|string|null — stored as the sender returns it
$answer->senderType;            // ?string — the sender's morph class
$answer->submittedAt;           // CarbonInterface
```

A field key that two groups of the form share is keyed group\_key.field\_key instead, so neither answer overwrites the other (\['applicant.name' => 'Kid', 'guardian.name' => 'Parent'\]). Values come back typed — an int for number fields, a bool for checkboxes, a CarbonImmutable for dates — see Typed field values.

## Show your open-source love

This package is free and MIT-licensed. If it saves you time, a one-off donation or a Patreon membership keeps it maintained, tested and documented.

[More ways to support, including crypto](https://roundly-consulting.com/support-us.md)

By donating, you agree to our [donation terms](https://roundly-consulting.com/donation-terms.md).

[Support our open source work (opens in a new tab)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Join us on Patreon (opens in a new tab)](https://www.patreon.com/cw/roundly)

## Want this built into your product?

We integrate our packages into custom Laravel and AI builds. Tell us what you're working on and we'll reply within 48 hours.

[Get a quote in 48 hours](https://roundly-consulting.com/contact.md) [Browse all packages](https://roundly-consulting.com/open-source/docs/forms-for-laravel.md)
