집 >데이터 베이스 >MySQL 튜토리얼 >Eloquent 모델을 사용하여 Laravel에서 세 개의 테이블을 조인하는 방법은 무엇입니까?
Laravel에서는 Eloquent ORM을 사용하면 관계형 데이터를 검색하는 것이 편리합니다. 다음 시나리오를 고려하십시오.
데이터베이스 테이블:
문서:
카테고리:
사용자:
목표:
해당 카테고리와 함께 기사 표시 카테고리 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!