Get expert guidance in a few days with a Laravel code review

Laravel Model Json

vildanbina/laravel-model-json image

Laravel Model Json stats

Downloads
1.2K
Stars
106
Open Issues
1
Forks
7

View on GitHub →

Laravel Model Json

Introduction

The Laravel Model JSON package allows you to export data from a specific model in the form of a JSON file. It is based on the php artisan command and is easy to use.

Installation

To install this package, use the following command:

composer require vildanbina/laravel-model-json

Usage

Export

The command to export data from a model is php artisan model:export {model}, where {model} is the class name of the model you wish to export. After running this command, the data will be automatically saved in the storage/app folder.

For example, to export data from the User model, you would run the following command:

php artisan model:export User

If your model is located in a different folder, you can specify the exact location, like so:

php artisan model:export App\Models\User

Options

Choose your path to save

This package also has several options that allow you to customize the export functionality. For example, you can use the --path=public option to save the JSON data in a different folder. Here's an example:

php artisan model:export User --path=public

Filename

By default, the filename of the JSON data is "Model-Timestamp", but you can also specify a custom filename using the --filename=data option. For example:

php artisan model:export User --filename=data

Except Fields from export

You can also exclude certain columns from the export by using the --except-fields option. This is useful if you only want to export certain data from the model. For example:

php artisan model:export User --except-fields=id,deleted_at

Without timestamps

To exclude the created_at, updated_at, and deleted_at columns from the export, use the --without-timestamps option. For example:

php artisan model:export User --without-timestamps

Select only specific fields

If a model has a large number of columns and you only want to export a subset of them, you can use the --only-fields option. This allows you to specify which columns you want to include in the export. For example:

php artisan model:export User --only-fields=name,email

Relationships

You can now export models along with their specified relationships using the new option --with-relationships={relations}. {relations} are the names of the relationships and can be separated by + symbol if you want to attach more than one relationship.

For example, if you want to export a Product model along with its Category relationship, you can use the command:

php artisan model:export Product --with-relationships=category

If you want to export a Product model along with both its Category and Supplier relationships, you can use the command:

php artisan model:export Product --with-relationships=category+supplier

Additionally, you can choose to only export specific columns of the relationship by using the syntax {relationship_name}:{columns_to_export}.

For example, if you want to export a Product model along with its Category relationship and only export the id and name columns of the Category, you can use the command:

php artisan model:export Product --with-relationships=category:id,name


If you want to save JSON in a file as a beautified version, you can use the --beautify option or its shorthand -b. For example:

php artisan model:export User --beautify
 
#or
 
php artisan model:export User -b

By default, it will be exported to an inline JSON.


Import

The model:import command allows you to import data from a JSON file and store it in your database.

For example, to import data for the User model, you would run the following command:

Parameters

  • model: Required. The name of the model to be imported.
  • path: Required. The path to the JSON file, which must contain valid JSON data.

Example:

php artisan model:import User public/Users.json

This command will store all the data found in the JSON file in the database.

Except Fields from importing

You can exclude specific columns by using the --except-fields option, separated by commas, ex:

php artisan model:import User public/Users.json --except-fields=email_verified_at

You can also exclude timestamps by using the --without-timestamps option.

Select only specific fields to import

If you only want to store specific fields, you can use the --only-fields option, separated by commas. Ex:

php artisan model:import User public/Users.json --only-fields=first_name,last_name,email

Update existing records

You can update existing records in the database instead of creating duplicates by using the --update-when-exists option, ex:

php artisan model:import User public/Users.json --update-when-exists

If you want to group the updates based on a different column, you can use the --update-keys option. The records will be updated based on the matching existing records.

php artisan model:import User public/Users.json --update-when-exists --update-keys=email

Note: The --update-when-exists option must be present in order for the update feature to be enabled.

Relationships

In addition to importing models from JSON, this package also allows you to import relationships between models. Currently supported relationship types are:

  • HasOne
  • HasMany
  • HasOneThrough
  • HasManyThrough
  • MorphOne
  • MorphMany
  • MorphToMany
  • MorphTo
  • BelongsTo
  • BelongsToMany

You can import models along with their specified relationships using the new option --with-relationships={relations}. {relations} are the names of the relationships and can be separated by + symbol if you want to attach more than one relationship.

For example, if you want to import a Category model along with its Product relationship, you can use the command:

php artisan model:import Category public/Categories.json --with-relationships=products

If you want to import a Category model along with both its Product and User relationships, you can use the command:

php artisan model:import Category public/Categories.json --with-relationships=products+user

Additionally, you can choose to only import specific columns of the relationship by using the syntax {relationship_name}:{columns_to_import}.

For example, if you want to import a Category model along with its Product relationship and only import the id and name columns of the Product, you can use the command:

php artisan model:import Category public/Categories.json --with-relationships=products:id,name

Note: In addition to the assignment that will be done in the above examples for importing a product to a category with relationships, Category will also be updated with the attributes found in the JSON.


Conclusion

The Laravel Model JSON package is a useful tool for exporting data from a specific model in a JSON format. It offers various options to customize the export process and make it more convenient for your needs. Give it a try and see how it can help you in your project.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please e-mail vildanbina@gmail.com to report any security vulnerabilities instead of the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

vildanbina photo

Experienced Full Stack Engineer with a demonstrated history of working in the information technology and services industry. Skilled in PHP (Laravel), Javascript

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Vildanbina Laravel Model Json Related Articles

Debounceable Queued Jobs in Laravel 13.6.0 image

Debounceable Queued Jobs in Laravel 13.6.0

Read article
AI Generative Engine Optimization for Laravel image

AI Generative Engine Optimization for Laravel

Read article
Log User Activity in Your Laravel App with Activity Log v5  image

Log User Activity in Your Laravel App with Activity Log v5

Read article
Build an AI Chat Agent with Laravel 12, MongoDB Atlas Vector Search, and Voyage AI image

Build an AI Chat Agent with Laravel 12, MongoDB Atlas Vector Search, and Voyage AI

Read article
Laravel 13 Released: PHP 8.3, Attributes, Laravel AI, and a Smoother Upgrade Path image

Laravel 13 Released: PHP 8.3, Attributes, Laravel AI, and a Smoother Upgrade Path

Read article
Laravel Pint Now Replaces Fully Qualified Class Names with Imports image

Laravel Pint Now Replaces Fully Qualified Class Names with Imports

Read article
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing
DreamzTech logo

DreamzTech

Hire 6-10+ Yrs. experienced skilled Laravel Developers from DreamzTech. We ensure NDA protected, 100% quality delivery. Contact Us & Discuss Your Need.

DreamzTech
Securing Laravel logo

Securing Laravel

The essential security resource for Laravel devs, covering everything you need to keep your apps secure. Sign up to receive weekly security tips and monthly in depth articles, diving deep into security concepts you need to know!

Securing Laravel
Blastup logo

Blastup

Blastup provides social media enhancement services including buying Instagram likes, followers, and views, with features like instant delivery and a variety of packages to suit different needs.

Blastup
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Typesense Search logo

Typesense Search

Typesense is an open source, blazing-fast search engine, optimized for helping you build delightful search experiences for your sites and apps. Natively integrated with Laravel Scout.

Typesense Search