### Get Help for a Blueprint Command Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html Use the --help option to get detailed information about any Blueprint command. ```bash php artisan blueprint:build --help ``` -------------------------------- ### Install Blueprint via Composer Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/installation/index.html Install Blueprint as a development dependency using Composer. It's recommended to use the `-W` flag for dependency compatibility. ```bash composer require -W --dev laravel-shift/blueprint ``` -------------------------------- ### Generate Session Store Statement with PHP Output Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/controller-statements.md This example shows the PHP output generated by the 'store' session statement. ```php $request->session()->put('post-title', $post->title); ``` -------------------------------- ### Model Definition with Shorthands Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-shorthands/index.html This example demonstrates using Blueprint's shorthands for 'id', 'softDeletes', and 'timestamps' to define model columns more concisely. ```yaml models: Widget: id softDeletes timestamps ``` -------------------------------- ### Generate Controller Method for Index Action Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/defining-controllers/index.html This example shows the generated controller method for an 'index' action. It includes querying all posts and rendering a view with the posts data. ```php public function index(Request $request): View { $posts = Post::all(); return view('post.index', compact('posts')); } ``` -------------------------------- ### Generated Seeder Code Example Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/generating-database-seeders/index.html Blueprint generates seeder classes that use model factories to create records. For example, a `PostSeeder` will use `factory(\App\Post::class, 5)->create()` to seed 5 records. ```php public function run(): void { factory(\App\Post::class, 5)->create(); } ``` -------------------------------- ### Model Definition with Implicit Shorthands Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-shorthands/index.html This example shows how to leverage Blueprint's implicit model shorthands, relying on default behaviors for 'id' and 'timestamps' while explicitly defining 'softDeletes'. ```yaml models: Widget: softDeletes ``` -------------------------------- ### Install Laravel Test Assertions Package Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/installation/index.html Optionally install the Laravel Test Assertions package as a development dependency, which provides helpful assertions for generated tests. ```bash composer require --dev jasonmccreary/laravel-test-assertions ``` -------------------------------- ### Define Post Model Relationships Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-relationships/index.html Example of defining multiple relationships for a Post model. Relationships can be defined anywhere but are recommended at the bottom of the model section. ```yaml models: Post: title: string:400 published_at: timestamp nullable relationships: hasMany: Comment belongsToMany: Media, Site belongsTo: \Spatie\LaravelPermission\Models\Role ``` -------------------------------- ### Generate Migration for Post Model Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/defining-models/index.html Blueprint generates migration code based on the model definitions. This example shows the migration for the `Post` model, including `id`, `title`, `content`, and `published_at` columns. ```php Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title', 400); $table->longText('content'); $table->timestamp('published_at')->nullable(); $table->timestamps(); }); ``` -------------------------------- ### Define Controller Actions and Statements Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/defining-controllers/index.html Define controllers, their actions, and the statements that will form the controller method bodies. Blueprint infers HTTP methods for routes, defaulting to GET unless an action like 'store' suggests POST. ```yaml controllers: Post: index: query: all render: post.index with:posts create: render: post.create store: validate: title, content save: post redirect: post.index Comment: show: render: comment.show with:comment ``` -------------------------------- ### Generate Migration for Post Model Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/defining-models.md Blueprint generates migration code based on the model definition. This example shows the migration for the `Post` model, including an `id`, `title`, `content`, `published_at` timestamp, and standard `timestamps`. ```php Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title', 400); $table->longText('content'); $table->timestamp('published_at')->nullable(); $table->timestamps(); }); ``` -------------------------------- ### Generated Route for Invokable Controller Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html This is the resulting route definition generated for an invokable controller. It maps a GET request to the controller's class. ```php Route::get('/report', App\Http\Controllers\ReportController::class); ``` -------------------------------- ### Query Builder Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates an Eloquent query statement using key-value pairs for where clauses and ordering. Supports generating query statements for all, get, pluck, and count. ```php query: where:title where:content order:published_at limit:5 ``` -------------------------------- ### Run the New Command with Options Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html The blueprint:new command can also publish configuration and stub files using the --config and --stubs flags respectively. ```bash php artisan blueprint:new --config --stubs ``` -------------------------------- ### Run the New Command Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html The blueprint:new command initializes Blueprint in your project by generating a draft.yaml file and preloading models. ```bash php artisan blueprint:new ``` -------------------------------- ### Run the Build Command Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html The blueprint:build command generates components based on a draft file. It defaults to draft.yaml in the project root if no path is provided. ```bash php artisan blueprint:build ``` -------------------------------- ### Publish Blueprint Configuration with blueprint:new Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/advanced-configuration.md Pass the `--config` or `-c` flag when running the `blueprint:new` command to publish the configuration file. ```sh php artisan blueprint:new --config ``` -------------------------------- ### Publish Blueprint Configuration Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/advanced-configuration/index.html Use the `blueprint:new` command with the `--config` flag or the `vendor:publish` command to generate the `blueprint.php` configuration file. ```bash php artisan blueprint:new --config ``` ```bash php artisan vendor:publish --tag=blueprint-config ``` -------------------------------- ### Basic Resource Controller Shorthand Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html Use the 'resource' shorthand to automatically generate all 7 standard web resource controller actions. ```yaml controllers: Post: resource ``` -------------------------------- ### Publish Blueprint Configuration Standalone Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/advanced-configuration.md Use the `vendor:publish` command with the `blueprint-config` tag to publish the configuration file separately. ```sh php artisan vendor:publish --tag=blueprint-config ``` -------------------------------- ### Combined Resource Shorthand with Custom Actions Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html Combine the 'resource: all' shorthand with custom actions and override specific default actions like 'show'. ```yaml controllers: Post: resource: all download: find: post.id respond: post show: query: comments where:post.id render: post.show with:post,comments ``` -------------------------------- ### Initialize DocSearch Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html Configures and initializes the DocSearch library for site search functionality. ```javascript docsearch({ apiKey: 'e7636fa4e7966c21a67c7cc2e10de70c', indexName: 'laravelshift_blueprint', appId: 'AV69P8LQ8H', inputSelector: '#docsearch-input', debug: false // Set debug to true if you want to inspect the dropdown }); ``` -------------------------------- ### Define Models and Controllers in Draft File Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/generating-components/index.html Use YAML to define models with columns and controllers with actions. Blueprint automatically handles common columns like 'id', 'created_at', and 'updated_at', and appends the 'Controller' suffix when not specified. ```yaml models: Post: title: string:400 content: longtext published_at: nullable timestamp controllers: Post: index: query: all render: post.index with:posts store: validate: title, content save: post send: ReviewNotification to:post.author with:post dispatch: SyncMedia with:post fire: NewPost with:post flash: post.title redirect: post.index ``` -------------------------------- ### Render View Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a `return view();` statement for a specified template, optionally including view data. If the template doesn't exist, Blueprint creates it. ```php render: post.show with:post,foo,bar ``` -------------------------------- ### Initialize Navigation Menu and Search Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html JavaScript code to initialize a responsive navigation menu and configure Algolia DocSearch. The navigation menu toggles visibility based on screen size and user interaction. DocSearch is configured with API keys and input selectors for searching documentation. ```javascript const navMenu = { toggle() { const menu = document.getElementById('js-nav-menu'); menu.classList.toggle('hidden'); menu.classList.toggle('lg:block'); document.getElementById('js-nav-menu-hide').classList.toggle('hidden'); document.getElementById('js-nav-menu-show').classList.toggle('hidden'); }, } document.onkeyup = function (e) { if (e.key === '/') { document.getElementById('docsearch-input').focus(); } }; docsearch({ apiKey: 'e7636fa4e7966c21a67c7cc2e10de70c', indexName: 'laravelshift_blueprint', appId: 'AV69P8LQ8H', inputSelector: '#docsearch-input', debug: false // Set debug to true if you want to inspect the dropdown }); ``` -------------------------------- ### Custom Resource Actions Shorthand Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html Generate specific resource controller actions by providing a comma-separated list. Prefix with 'api.' for API actions. ```yaml # generate only index and show actions resource: index, show ``` ```yaml # generate only store and update API actions resource: api.store, api.update ``` ```yaml # generate "web" index and API destroy actions resource: index, api.destroy ``` -------------------------------- ### Update Model Cache with blueprint:trace Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html Run this command to have Blueprint analyze your application and update its cache with all of your existing models. This is useful when working with existing applications or when the cached model definitions may be outdated. ```bash php artisan blueprint:trace ``` -------------------------------- ### API Resource Controller Shorthand Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html Specify 'api' as the value for the 'resource' shorthand to generate the 5 standard API resource controller actions. ```yaml controllers: Post: resource: api ``` -------------------------------- ### Configure Invokable Controller with Actions Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html Define an 'invokable' action with specific events like 'fire' and 'render' for more detailed control over the single-action controller's behavior. ```yaml controllers: Report: invokable: fire: ReportGenerated render: report ``` -------------------------------- ### Define Models and Controllers in YAML Draft Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/generating-components.md Use this YAML syntax to define your application's models and controllers. Blueprint automatically handles common fields like 'id', 'created_at', and 'updated_at' for models, and appends 'Controller' to controller names if omitted. ```yaml models: Post: title: string:400 content: longtext published_at: nullable timestamp controllers: Post: index: query: all render: post.index with:posts store: validate: title, content save: post send: ReviewNotification to:post.author with:post dispatch: SyncMedia with:post fire: NewPost with:post flash: post.title redirect: post.index ``` -------------------------------- ### JavaScript Global Key Listener Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html Listens for the '/' key press to focus the search input. ```javascript document.onkeyup = function (e) { if (e.key === '/') { document.getElementById('docsearch-input').focus(); } }; ``` -------------------------------- ### Define Multiple Models in Blueprint Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/defining-models/index.html Use the `models` section to define multiple models. Each model is defined with a name followed by a list of columns, specified as `key: value` pairs. ```yaml models: Post: title: string:400 content: longtext published_at: nullable timestamp Comment: content: longtext published_at: nullable timestamp # additional models... ``` -------------------------------- ### Publish Stubs Command Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html The blueprint:stubs command publishes Blueprint's stub files, allowing for customization of generated components. ```bash php artisan blueprint:stubs ``` -------------------------------- ### Dispatch Job Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a statement to dispatch a Job. Blueprint instantiates the job with the provided value and passes any data. If the job class does not exist, Blueprint creates it. ```php dispatch: SyncMedia with:post ``` -------------------------------- ### Resource Response Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates an Eloquent resource response for a given model. Supports `collection` and `paginate` prefixes for specific response types. Blueprint creates the resource if it doesn't exist. ```php resource: user ``` ```php resource: paginate:users ``` -------------------------------- ### Ignore Blueprint Files in Git Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/installation/index.html Add Blueprint's scratch pad and cache files to your .gitignore to prevent them from being tracked by version control. ```bash echo '/draft.yaml' >> .gitignore ``` ```bash echo '/.blueprint' >> .gitignore ``` -------------------------------- ### Respond Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a response statement. If the value is an integer, it's used as the status code. Otherwise, it's used as the variable name to return. Blueprint creates the view if it doesn't exist. ```php respond: post.show with:post ``` -------------------------------- ### Flash Session Data Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a statement to flash data to the session. The value is used as the session key, and Blueprint expands the reference as the session value. ```php flash: post.title ``` -------------------------------- ### Generate Invokable Controller Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html Use the 'invokable' shorthand to generate a single-action controller. This is equivalent to defining an '__invoke' action that renders a view. ```yaml controllers: Report: invokable ``` ```yaml controllers: Report: __invoke: render: report ``` -------------------------------- ### Fire Event Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a statement to dispatch an Event. Blueprint instantiates the event with the provided value and passes any data. If the event class does not exist, Blueprint creates it. ```php fire: NewPost with:post ``` -------------------------------- ### Define String with Length Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html Specify a string column with a maximum length. ```php payment_token: string:40 ``` -------------------------------- ### Define String with Modifiers Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html Define a string column with length and modifiers like nullable and index. ```php email: string:100 nullable index ``` -------------------------------- ### Explicit Invokable Controller Definition Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/controller-shorthands.md This is the explicit definition of an invokable controller using the `__invoke` action, demonstrating the underlying syntax for the `invokable` shorthand. ```yaml controllers: Report: __invoke: render: report ``` -------------------------------- ### Use Intermediate Model for belongsToMany Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-relationships/index.html Shows how to specify an intermediate model for a 'belongsToMany' relationship by prefixing the alias with an ampersand (&). ```yaml User: relationships: belongsToMany: Team:&Membership ``` -------------------------------- ### Longhand Model Definition Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-shorthands/index.html This is the explicit, longhand way to define model columns, including 'id', 'deleted_at', 'created_at', and 'updated_at'. ```yaml models: Widget: id: id deleted_at: timestamp created_at: timestamp updated_at: timestamp ``` -------------------------------- ### Define Decimal with Precision and Scale Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html Define a decimal column with specified precision and scale. ```php total: decimal:8,2 ``` -------------------------------- ### Send Mailable or Notification Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a statement to send a Mailable or Notification. Blueprint creates the mailable if it doesn't exist, defining properties and a constructor. ```php send: ReviewPost to:post.author with:post ``` -------------------------------- ### Infer Model Reference with Dot Syntax Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/model-references.md Use dot syntax to reference a model's attribute within a controller action. Blueprint infers the model context from the controller name or allows explicit model specification. ```yaml controllers: Post: show: find: user.id # ... ``` -------------------------------- ### Define Seeders in Blueprint Draft Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/generating-database-seeders/index.html Specify the models for which you want to generate seeders in the `seeders` section of your Blueprint draft file. This section takes a comma-separated list of model references. ```yaml models: Post: title: string:400 content: longtext published_at: nullable timestamp Comment: post_id: id content: longtext user_id: id User: name: string seeders: Post, Comment ``` -------------------------------- ### Specifying Model Class Names Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-references/index.html Reference models using their class name, including namespaces if applicable. This allows you to refer to models not directly inferred from the controller name. ```yaml controllers: Post: index: query: all render: post.index with:posts create: find: User.id render: post.create with:User show: query: all:comments render: post.show with:post,comments ``` -------------------------------- ### Define Enum with Values Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html Define an enum column with a list of allowed values. ```php status: enum:pending,successful,failed ``` -------------------------------- ### Redirect Route Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a return redirect() statement. The value is used as a reference to a named route, passing any data parameters. ```php redirect: post.show with:post ``` -------------------------------- ### Inferring Model from Controller Name Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-references/index.html Blueprint assumes a controller name like `PostController` relates to a `Post` model. This is the default behavior when no explicit model is specified. ```yaml controllers: Post: show: find: user.id # ... ``` -------------------------------- ### Define Composite Indexes in Blueprint Models Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/keys-and-indexes/index.html Add composite indexes by specifying the `indexes` key in your model definition. This accepts an array of index types and comma-separated column names. ```yaml User: indexes: - unique: owner_id, badge_number ``` -------------------------------- ### Define Foreign Keys and Indexes with Column Modifiers Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/keys-and-indexes/index.html Use `id` column type with `foreign`, `index`, or `unique` modifiers to define keys and indexes. The `foreign` modifier also adds reference and cascade constraints. ```php user_id: id foreign owner_id: id foreign:users uid: id foreign:users.id ``` -------------------------------- ### Notify User Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a statement to send a Notification. Blueprint instantiates the notification, specifies the recipient, and passes any data. It can also send notifications using the Notifiable trait by passing a model reference. ```php notify: post.author ReviewPost with:post ``` ```php notify: user AccountAlert ``` -------------------------------- ### Run the Erase Command Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/available-commands/index.html The blueprint:erase command undoes the last blueprint:build command by deleting generated files. It's recommended to use version control for more robust undos. ```bash php artisan blueprint:erase ``` -------------------------------- ### Longhand Resource Controller Definition Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-shorthands/index.html This is the explicit, longhand definition for a resource controller, detailing each action and its associated statements. ```yaml controllers: Post: index: query: all:posts render: post.index with:posts create: render: post.create store: validate: post save: post flash: post.id redirect: post.index show: render: post.show with:post edit: render: post.edit with:post update: validate: post update: post flash: post.id redirect: post.index destroy: delete: post redirect: post.index ``` -------------------------------- ### Referencing Model Attributes with Dot Notation Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-references/index.html Use dot notation to reference specific attributes on related models. Blueprint converts these to variable references using arrow syntax when needed. ```yaml controllers: Post: index: query: all render: post.index with:posts create: find: user.id render: post.create with:user store: validate: title, published_at save: post redirect: post.show show: query: all:comments render: post.show with:post,comments ``` -------------------------------- ### Alias a hasMany Relationship Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-relationships/index.html Demonstrates how to alias a 'hasMany' relationship to give it a custom name. Blueprint will automatically pluralize the alias correctly based on the relationship type. ```yaml models: Post: relationships: hasMany: Comment:reply ``` -------------------------------- ### Store Session Data Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a statement to store data in the session. The `value` is slugified to become the session key, and the reference expands to the session value. ```php store: post.title ``` -------------------------------- ### JavaScript Navigation Menu Toggle Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html Handles toggling the visibility of a navigation menu and associated icons. ```javascript const navMenu = { toggle() { const menu = document.getElementById('js-nav-menu'); menu.classList.toggle('hidden'); menu.classList.toggle('lg:block'); document.getElementById('js-nav-menu-hide').classList.toggle('hidden'); document.getElementById('js-nav-menu-show').classList.toggle('hidden'); }, } ``` -------------------------------- ### Generate Eloquent Save Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/controller-statements.md Generates an Eloquent statement for saving a model. 'store' actions default to Model::create(), while others default to $model->save(). -------------------------------- ### Define Model Data Types with Attributes Source: https://github.com/laravel-shift/blueprint-docs/blob/master/source/docs/model-data-types.md Use a colon to append attributes like length, precision, scale, or enum values to column types. This allows for specific data constraints. ```yaml payment_token: string:40 total: decimal:8,2 status: enum:pending,successful,failed ``` -------------------------------- ### Save Model Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates an Eloquent statement for saving a model. For `store` actions, it generates `Model::create()`; otherwise, it generates `$model->save()`. ```php save ``` -------------------------------- ### Update Model Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates an Eloquent `update` statement for a model. Can update all columns using the model reference or specific columns by name. Infers the model reference when used with resource controllers. ```php update: post ``` ```php update: title, content, author_id ``` -------------------------------- ### Validate Model Statement Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/controller-statements/index.html Generates a form request with validation rules based on the model definition. Can validate all columns or specific ones by name. Also updates type-hints for injected requests and PHPDoc references. ```php validate: post ``` ```php validate: title, content, author_id ``` -------------------------------- ### Define Enum with Spaces in Values Source: https://github.com/laravel-shift/blueprint-docs/blob/master/build/docs/model-data-types/index.html When specifying an attribute or modifier value which contains a space, you must wrap the value in double quotes. ```php status: enum:Ordered,Completed,"On Hold" ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.