• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Tutsplanet

Tutsplanet

Free Technical and Blogging Resources

  • Home
  • Web Hosting
  • Programming
  • Plugins
  • Twitter Trends
  • Tools
  • About Us

Programming TagsLaravel

How to Add Foreign Key in Laravel Migration?

Aug 23, 2022 Editorial Staff Leave a Comment

Share
Tweet
Share

This tutorial shows how to add a foreign key constraint to a field in Laravel in the migration file. As we know already a foreign key is a field that is used to establish the relationship between two tables via the primary key. This example starts with creating a migration file in Laravel and shows how to populate this migration file with migration statements.

You can safely use this method in Laravel 6, Laravel 7, Laravel 8, Laravel 9, etc.

In this short example, we will create a table for ‘products’ and ‘images’. The images table will have a foreign key linked to the products table.

Create migration fields

Run the below commands to create migration files

php artisan make:migration create_products_table
php artisan make:migration create_product_images_table

 database/migrations/2022_08_23_114617_create_products_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('description');
            $table->decimal('price');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}

database/migrations/2022_08_23_114656_create_product_images_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateProductImagesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('product_images', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('product_id');
            $table->foreign('product_id')->references('id')->on('products');
            $table->string('image',255);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('product_images');
    }
}

Run migration to generate the tables in Laravel.

php artisan migrate

After tables are generated you can go to the database admin and see the product_images table’s structure. In the indexes section, you can see that there is a foreign key generated for you. For our case, it will be product_images_product_id_foreign .

How-to-Add-Foreign-Key-in-Laravel-Migration

Did this post help you?
Tutsplanet brings in-depth and easy tutorials to understand even for beginners. This takes a considerable amount of work. If this post helps you, please consider supporting us as a token of appreciation:
  • Just want to thank us? Buy us a Coffee
  • May be another day? Shop on Amazon using our links.
    Your prices won't change but we get a small commission.

Editorial Staff

Editorial Staff at Tutsplanet is a dedicated team to write various tutorials about subjects like Programming, Technology and Operating Systems.

View all posts by Editorial Staff

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

Quick Links

  • Top 21 Website Ideas To Make Money Online in 2021
  • A Simple YouTube Video Downloader Script in PHP
  • The 50 Most Useful jQuery Plugins for Frontend Development
  • Replace “\n” with new line characters, using Notepad++
  • Using Third-Party Libraries in Codeigniter
  • Upload Multiple Images and Store in Database using PHP and MySQL.
  • Hierarchical Tree view Category Example in Laravel
  • Laravel Image Intervention Tutorial With Example
  • How to import sql file in MySQL database using PHP?
  • Free VAT Calculator Online

Subscribe

* indicates required

Search Here

Share

   

Hot topics

  • Replace “\n” with new line characters, using Notepad++ 16 views
  • Auto Login in PuTTY with a password 14 views
  • Add FTP/SFTP in Visual Studio Code 14 views
  • A Simple YouTube Video Downloader Script in PHP 12 views
  • Hierarchical Tree view Category Example in Laravel 11 views
  • How to enter new line in Microsoft Teams? 10 views
  • Open a URL in a new tab using JavaScript 10 views
  • PHP: Implode () with quotes 10 views
  • How to prevent user from typing in text field without disabling the field? 8 views
  • Post Data to an iframe 8 views

Categories

  • Design & Development
  • Drupal
  • Facebook
  • General
  • How To
  • ios
  • Javascript
  • Linux
  • Magento
  • Marketing
  • News
  • PHP
  • Plugins
  • Programming
  • Snippets List
  • Social Media
  • Softwares
  • Themes
  • Tips
  • Wordpress
  • YouTube

Copyright © 2023 · Planet on Genesis Framework · Powered By BunnyCDN . Network wallpapernoon.com