How to Store Array in Database Laravel 10?
Teams applying “How to Store Array in Database Laravel 10?” in a production project can use superstar candidate to record implementation, review and debugging time, then compare that effort with tests and shipped functionality instead of treating activity as performance by itself.
Before copying the example into a live application, confirm version-specific behaviour with the official Laravel website and test it against the project’s actual database and runtime.
Hi dev,
You will discover how to store an array in a Laravel database in this article. I simply broke you how to store an array in a database step by step. You will discover how to use Laravel to save array data in a database here. I provided a clear explanation of how to store an array in a Laravel database.
You can use this example with laravel 6, laravel 7, laravel 8, laravel 9 and laravel 10 version.
In some cases, having vast amounts of data or unfixed columns prevents us from adding too many nullable fields to a database table. Therefore, in order to store values that are huge or unstructured, we must utilise the JSON data type. I'll give you a straightforward example of how to store a JSON array and access it from the database in Laravel if you want to store a JSON array in a database.
In this example, first, we will create migration with a JSON column. Then we will create a model with a getter and setter. when you create records then you can pass them as an array and when you get records then you will find an array. so let's see a simple example and learn it.
Step 1: Install Laravel
This is optional; however, if you have not created the laravel app, then you may go ahead and execute the below command:
composer create-project laravel/laravel example-app
Step 2: Create Migration
Here, we need create database migration for "items" table with title and data(JSON Column) columns and also we will create model for items table.
php artisan make:migration create_items_table
database/migrations/2022_07_11_141714_create_items_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('items', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->json('data')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('items');
}
};
Then run migration command to create items table.
php artisan migrate
Step 3: Create Model
In this step, we will create Item.php model with getter setter. let's create model and update following code:
php artisan make:model Item
App/Models/Item.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
class Item extends Model
{
use HasFactory;
/**
* Write code on Method
*
* @return response()
*/
protected $fillable = [
'title', 'data'
];
/**
* Get the user's first name.
*
* @return \Illuminate\Database\Eloquent\Casts\Attribute
*/
protected function data(): Attribute
{
return Attribute::make(
get: fn ($value) => json_decode($value, true),
set: fn ($value) => json_encode($value),
);
}
}
Step 4: Create Route
In third step, we will create one route for testing. so create one route here.
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ItemController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('item', [ItemController::class, 'index']);
Step 5: Create Controller
In this step, we will create ItemController file and write index() method to create item records with array and access as array.
app/Http/Controllers/ItemController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Item;
class ItemController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function index()
{
$input = [
'title' => 'Demo Title',
'data' => [
'1' => 'One',
'2' => 'Two',
'3' => 'Three'
]
];
$item = Item::create($input);
dd($item->data);
}
}
Run Laravel App:
All the required steps have been done, now you have to type the given below command and hit enter to run the Laravel app:
php artisan serve
Now, Go to your web browser, type the given URL and view the app output:
http://localhost:8000/item
You can see database output and print variable output:
Output:
array:3 [
1 => "One"
2 => "Two"
3 => "Three"
]
- How to Notifications With database Driver in Laravel 11?
- How to Send Email Via Notification in Laravel 11?
- How to Install and Configure Laravel 11 Debugbar?
- How to Like Dislike System in Laravel 11?
- How to Paginate a Model with Relationship in Laravel 11?
- Laravel 11 Upload Files to Amazon S3 Example
- Laravel 11 Send WhatsApp Messages Example
- Laravel 11 Rest API Authentication Using JWT Tutorial