Eloquent 모델을 사용하여 Laravel에서 세 개의 테이블을 조인하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-13 03:44:01
원래의
804명이 탐색했습니다.

How to Join Three Tables in Laravel Using Eloquent Models?

Laravel Eloquent 모델을 사용하여 세 개의 테이블 결합

Laravel에서는 Eloquent ORM을 사용하면 관계형 데이터를 검색하는 것이 편리합니다. 다음 시나리오를 고려하십시오.

데이터베이스 테이블:

  • 문서:

    • id
    • 제목
    • 본문
    • categories_id
    • user_id
  • 카테고리:

    • ID
    • category_name
  • 사용자:

    • id
    • user_name
    • user_type

목표:

해당 카테고리와 함께 기사 표시 카테고리 ID 대신 이름을 사용하고 사용자 ID 대신 사용자 이름을 사용합니다.

기존 SQL 쿼리 사용:

이는 다음과 같은 기존 SQL 쿼리를 사용하여 수행할 수 있습니다.

$articles = DB::table('articles')
                ->join('categories', 'articles.categories_id', '=', 'categories.id')
                ->join('users', 'users.id', '=', 'articles.user_id')
                ->select('articles.id', 'articles.title', 'articles.body', 'users.user_name', 'categories.category_name')
                ->get();
로그인 후 복사

Eloquent 모델 사용:

그러나 Laravel에서는 Eloquent 모델을 사용하면 보다 간소화된 접근 방식이 가능합니다. 시작하려면 모델을 정의하세요:

Article.php:

namespace App\Models;

use Eloquent;

class Article extends Eloquent
{
    protected $table = 'articles';

    public function user()
    {
        return $this->belongsTo('App\Models\User');
    }

    public function category()
    {
        return $this->belongsTo('App\Models\Category');
    }
}
로그인 후 복사

Category.php:

namespace App\Models;

use Eloquent;

class Category extends Eloquent
{
    protected $table = "categories";

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}
로그인 후 복사

User.php:

namespace App\Models;

use Eloquent;

class User extends Eloquent
{
    protected $table = 'users';

    public function articles()
    {
        return $this->hasMany('App\Models\Article');
    }
}
로그인 후 복사

이러한 모델을 정의하면 필요한 데이터를 검색하는 것이 간단해집니다.

$article = \App\Models\Article::with(['user','category'])->first();
로그인 후 복사

그런 다음 다음과 같이 속성에 액세스할 수 있습니다.

// Retrieve user name
$article->user->user_name

// Retrieve category name
$article->category->category_name
로그인 후 복사

또한 카테고리나 사용자별로 기사를 검색할 수도 있습니다.

$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\User::with('articles')->get();
로그인 후 복사

자세한 내용은 공식 Laravel 문서를 참조하세요: http://laravel.com/ docs/5.0/eloquent

위 내용은 Eloquent 모델을 사용하여 Laravel에서 세 개의 테이블을 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿