Home PHP Framework Laravel Let's talk about the simplest 'one-to-one” relationship between Laravel models!

Let's talk about the simplest 'one-to-one” relationship between Laravel models!

Oct 12, 2020 pm 02:10 PM
laravel

The following is the tutorial column of Laravel to introduce to you the simplest "one-to-one" relationship between Laravel models! , I hope it will be helpful to friends in need!

Let's talk about the simplest 'one-to-one” relationship between Laravel models!

Introduction

Relational database provides a very easy-to-use data association binding mode. Use SQL statements can easily perform related data queries and operations.

If all relationships are operated at the database level, it will be very inconvenient.

So, the laravel model provides association relationships, and this article will sort out those usages.

Code Time

We don’t want to read the manuscript like a PPT and list all the relationship models. That is not intuitive and not efficient for learning. Way.

Let’s start from the example and see what problem the association relationship solves and how to use it.

First is the preparation of the database. Assume that there is a field correspondence between the following two tables:

Lets talk about the simplest one-to-one” relationship between Laravel models!

Use the command line to create a Profile model and create a migration at the same time. File:

php artisan make:model Profile --migration
Copy after login

Let’s look at the contents of the generated app/Profile.php file:

namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
Copy after login

Because the –migration option is used, laravel automatically The database/migrations/2020_10_11_015236_create_profiles_table.php file is generated,

is used to generate the corresponding database profiles table.

Still the old rule, first implement the up method used for database migration:

public function up(){
    Schema::create('profiles', function(Blueprint $table)
    {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users');
        $table->string('url');
        $table->string('telephone');
        $table->timestamps();
    });}
Copy after login

The method for rollback is not listed, it is just the deletion of the table. Manually execute the migration instructions below:

php artisan migrate
Copy after login

The output content is as follows:

Migrated: 2020_10_11_015236_create_profiles_table.php
Copy after login

Association

Everything is ready, let’s start Use associations to handle data consistency. A user corresponds to a profile, so this is a one-to-one relationship.

Add the following statement to the User model:

class User extends Model {
    public function profile()
    {
        return $this->hasOne('App\Profile');
    }}
Copy after login

Once the above method is defined, it can be called in a chain like this:

$user = User::find(1)->profile->telephone;
Copy after login

Let’s break it down and explain. First use User::find($id) to return an instance of the User model object.

This instance has a profile method, which is the above relationship statement.

Call profile What is returned is an instance of the Profile object, so you can continue to call the properties of the Profile, which is the origin of telephone.

It is important to note that similar to the following writing method, the return results are different:

$user = User::find($id);
$user->profile; // 返回 Profile 对象
$user->profile(); // 返回 hasOne 关联关系对象
Copy after login

When you use it, you must not be confused and know how to use it.

With associated queries, there will naturally be associated updates. The usage is as follows:

$profile = new Profile;
$profile->telephone = '12345678';
$user = User::find(1);
$user->profile()->save($profile);
Copy after login

With the write operation of associated updates, there will naturally be associated deletions and model method calls:

$user = User::find($id);
$user->profile()->delete();
Copy after login

Due to the strict one-to-one relationship, that is, a user has only one profile. If a user is deleted,

There will be a lonely profile left with no attachment.

In addition to the consistency guarantee in the program context, you can also use the foreign key of the database to delete the profile association when deleting the user. Then just modify the migration file,

and add the following content:

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
Copy after login

Write at the end

This article introduces the simplest " laravel model association" "One-on-one", we explained

how to delete resources consistently from a program perspective and a database perspective. More complex relationships are meaningful at the programming level. We will introduce more relationships in the next chapter.                                                                                                                

The above is the detailed content of Let's talk about the simplest 'one-to-one” relationship between Laravel models!. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to get the return code when email sending fails in Laravel? How to get the return code when email sending fails in Laravel? Apr 01, 2025 pm 02:45 PM

Method for obtaining the return code when Laravel email sending fails. When using Laravel to develop applications, you often encounter situations where you need to send verification codes. And in reality...

Laravel schedule task is not executed: What should I do if the task is not running after schedule: run command? Laravel schedule task is not executed: What should I do if the task is not running after schedule: run command? Mar 31, 2025 pm 11:24 PM

Laravel schedule task run unresponsive troubleshooting When using Laravel's schedule task scheduling, many developers will encounter this problem: schedule:run...

In Laravel, how to deal with the situation where verification codes are failed to be sent by email? In Laravel, how to deal with the situation where verification codes are failed to be sent by email? Mar 31, 2025 pm 11:48 PM

The method of handling Laravel's email failure to send verification code is to use Laravel...

How to implement the custom table function of clicking to add data in dcat admin? How to implement the custom table function of clicking to add data in dcat admin? Apr 01, 2025 am 07:09 AM

How to implement the table function of custom click to add data in dcatadmin (laravel-admin) When using dcat...

Laravel - Dump Server Laravel - Dump Server Aug 27, 2024 am 10:51 AM

Laravel - Dump Server - Laravel dump server comes with the version of Laravel 5.7. The previous versions do not include any dump server. Dump server will be a development dependency in laravel/laravel composer file.

Laravel Redis connection sharing: Why does the select method affect other connections? Laravel Redis connection sharing: Why does the select method affect other connections? Apr 01, 2025 am 07:45 AM

The impact of sharing of Redis connections in Laravel framework and select methods When using Laravel framework and Redis, developers may encounter a problem: through configuration...

Laravel multi-tenant extension stancl/tenancy: How to customize the host address of a tenant database connection? Laravel multi-tenant extension stancl/tenancy: How to customize the host address of a tenant database connection? Apr 01, 2025 am 09:09 AM

Custom tenant database connection in Laravel multi-tenant extension package stancl/tenancy When building multi-tenant applications using Laravel multi-tenant extension package stancl/tenancy,...

Laravel - Action URL Laravel - Action URL Aug 27, 2024 am 10:51 AM

Laravel - Action URL - Laravel 5.7 introduces a new feature called “callable action URL”. This feature is similar to the one in Laravel 5.6 which accepts string in action method. The main purpose of the new syntax introduced Laravel 5.7 is to directl

See all articles