CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

15 February, 2022

Create Rich Data Objects in Laravel

 Programing Coderfunda     February 15, 2022     Laravel, Packages, php     No comments   

 

Create Rich Data Objects in Laravel


Laravel Data is a package by Spatie that enables the creation of rich data objects which can be used for form requests, data transformers, and more.

The API is simple for data objects but unlocks powerful featured by extending the package's Data class:

1use Spatie\LaravelData\Data;
2 
3class SongData extends Data
4{
5 public function __construct(
6 public string $title,
7 public string $artist,
8 ) {
9 }
10}

According to the documentation, extending the package's Data class gives you valuable features for working with data across various aspects of Laravel:

  • Automatically transforming data objects into resources (like the Laravel API resources)
  • Transform only the requested parts of data objects with lazy properties
  • Automatically creating data objects from request data and validating them
  • Automatically resolve validation rules for properties within a data object
  • Make it possible to construct a data object from any type you want
  • Add support for automatically validating data objects when creating them
  • Generate TypeScript definitions from your data objects you can use on the frontend
  • Save data objects as properties of an Eloquent model
  • And a lot more ...

Here's an example from the documentation of creating a data object from an Eloquent model:

1// Create a SongData instance from a model
2SongData::from(Song::firstOrFail($id));
3 
4// Create data objects, that could possibly be null
5SongData::optional(null); // returns null

The Laravel Data package will find the required properties from the model and use them to construct this data object.

A benefit of using this package is that you don't have to write the same properties in multiple places, such as a resource, a data transfer object, and request validation.

The Laravel data package also includes flexible and advanced features:

  • Eloquent casting
  • Transform data objects to TypeScript definitions
  • Casts — transform values into complex types
  • Transformers — transform complex values into simple types
  • Validation Rule Inferring
  • Data Object validation attributes using PHP 8.0 attributes
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Spring Security PreAuthorize using multi-value enum
    I have a annotation that is declared as follows. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @PreAuthorize("hasA...
  • Running PHPStan on max with Laravel
      Over the last few years static analysis in PHP, and more specifically Laravel, has become more and more popular. With more people adopting...
  • Generalization
    Generalization Generalization is like a bottom-up approach in which two or more entities of lower-level levels combine to form a higher-leve...
  • Your requirements could not be resolved to an installable set of packages.
    Problems : Your requirements could not be resolved to an installable set of packages. Solution :  Run this command: composer install --ignor...
  • Vue.js Events
      In Vue.js, Events are used to respond to an action. Suppose, you have to build a dynamic website using Vue.js then you'll most likely ...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • July (4)
  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda