


Let's talk about the simplest 'one-to-one” relationship between Laravel models!
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!
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:
Use the command line to create a Profile model and create a migration at the same time. File:
php artisan make:model Profile --migration
Let’s look at the contents of the generated app/Profile.php file:
namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
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(); });}
The method for rollback is not listed, it is just the deletion of the table. Manually execute the migration instructions below:
php artisan migrate
The output content is as follows:
Migrated: 2020_10_11_015236_create_profiles_table.php
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'); }}
Once the above method is defined, it can be called in a chain like this:
$user = User::find(1)->profile->telephone;
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 关联关系对象
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);
With the write operation of associated updates, there will naturally be associated deletions and model method calls:
$user = User::find($id); $user->profile()->delete();
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');
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



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 run unresponsive troubleshooting When using Laravel's schedule task scheduling, many developers will encounter this problem: schedule:run...

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

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 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.

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...

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 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
