튜토리얼 칼럼과 Laravel 모델 연관 중 가장 간단한 "일대일"입니다! , 도움이 필요한 친구들에게 도움이 되길 바랍니다!
소개관계형 데이터베이스는 매우 사용하기 쉬운 데이터 연관 바인딩 모드를 제공하며, SQL 문을 사용하여 관련 데이터를 쉽게 쿼리하고 연산할 수 있습니다. 모든 관계를 데이터베이스 수준에서 운영한다면 매우 불편할 것입니다.
그래서 laravel 모델은 연관 관계를 제공하며, 이번 글에서는 그러한 사용법을 정리하겠습니다.
코딩 시간우리는 원고를 PPT처럼 읽고 모든 관계 모델을 나열하고 싶지 않습니다. 이는 직관적이지 않고 효율적인 학습 방법이 아닙니다. 연관관계가 어떤 문제를 해결하고 어떻게 활용하는지 예시부터 살펴보겠습니다.
먼저 데이터베이스 준비입니다. 다음 두 테이블 사이에 필드 대응이 있다고 가정합니다.
명령줄을 사용하여 프로필 모델을 생성하고 동시에 마이그레이션 파일을 생성합니다.php artisan make:model Profile --migration
파일의 내용:
namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
–migration 옵션을 사용했기 때문에 laravel은
database/migrations/2020_10_11_015236_create_profiles_table.php파일을 자동으로 생성했습니다. 해당 데이터베이스 profiles 테이블을 생성합니다. 여전히 기존 규칙에 따라 먼저 데이터베이스 마이그레이션에 사용되는
up 메서드를 구현하세요. 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();
});}
php artisan migrate
출력 내용은 다음과 같습니다. Migrated: 2020_10_11_015236_create_profiles_table.php
모든 것이 준비되었습니다. 데이터 일관성을 처리하기 위해 연관 관계를 사용하기 시작합니다. 사용자는 프로필에 해당하므로 이는 일대일 관계입니다. 사용자 모델에 다음 명령문을 추가하세요. class User extends Model {
public function profile()
{
return $this->hasOne('App\Profile');
}}
$user = User::find(1)->profile->telephone;
User::find($id)
를 사용하여 User 모델 객체의 인스턴스를 반환합니다. 이 인스턴스에는 위의 관계 설명인profile
메소드가 있습니다.Calling profile
은 Profile 객체의 인스턴스를 반환하므로 전화의 근원이 되는 Profile의 속성을 계속해서 호출할 수 있습니다.다음 작성 방법과 비슷하지만 반환 결과가 다르다는 점에 유의하는 것이 중요합니다.
$user = User::find($id); $user->profile; // 返回 Profile 对象 $user->profile(); // 返回 hasOne 关联关系对象
연관된 쿼리에는 자연스럽게 연관된 업데이트가 있습니다. 사용법은 다음과 같습니다.
$profile = new Profile; $profile->telephone = '12345678'; $user = User::find(1); $user->profile()->save($profile);
$user = User::find($id); $user->profile()->delete();
$table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
Written at the end
이 글에서는 laravel 모델의 가장 간단한 "일대일" 연관을 소개합니다. 프로그램 관점에서 설명합니다. 그리고 데이터베이스 관점 리소스 삭제시 일관되게 삭제하는 방법. 프로그래밍 수준에서는 더 복잡한 관계가 의미가 있습니다. 다음 장에서 더 많은 관계를 소개하겠습니다. ㅋㅋㅋ위 내용은 Laravel 모델 간의 가장 간단한 '일대일' 관계에 대해 이야기해 보겠습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!