In this video, we will learn how to store and display product attributes with orders.

First, let's add a column to the order_items table to store the product attributes details. Switch to the command prompt and run the command:


php artisan make:migration add_options_to_order_items_table –table=order_items

Next, open the migration file and add a column:


public function up()
{
Schema::table('order_items', function (Blueprint $table) {
$table->longText('options')->nullable();
});
}
public function down()
{
Schema::table('order_items', function (Blueprint $table) {
$table->dropColumn('options');
});
}

Save the changes and migrate the migration. Switch to the command prompt and run the command:


php artisan migrate

Now, run the application:


php artisan serve

Open the CheckoutComponent.php class file and store the product attributes inside the placeOrder function:


if($item->options)
{
$orderItem->options = serialize($item->options);
}

That's it! Let's test the functionality. Add a product to the cart, checkout, and place an order. You should see the message `Order placed successfully`.

Now, let's check the database. Open phpMyAdmin, browse the order_items table, and you should see the ordered items with attributes values.

Next, let's display the order attributes on the user's order details page. Open the user-order-details-component.blade.php view file and add the following code:


@if($item->options)
<div class=`product-name`>
@foreach(unserialize($item->options) as $key => $value)
<p><b>{{$key}}:{{$value}}</b></p>
@endforeach
</div>
@endif

Save the changes and refresh the page. Go to `My Orders` and view the details of the order. You should see the product attributes.

Now, let's display the product attributes on the admin's order details page. Open the admin-order-details-component.blade.php view file and add the following code:


@if($item->options)
<div class=`product-name`>
@foreach(unserialize($item->options) as $key => $value)
<p><b>{{$key}}:{{$value}}</b></p>
@endforeach
</div>
@endif

Save the changes and refresh the page. Logout from the user account, login with admin credentials, and go to the `All Orders` page. Open the order details page, and you should see the product attributes.

By following these steps, you can store and display product attributes with orders.