Laravel eloquent 모델로 3 개의 테이블을 결합하는 방법
테이블이 세 개 있어요
기사 테이블
id
title
body
categories_id
user_id
카테고리 테이블
id
category_name
사용자 테이블
id
user_name
user_type
category_id 대신 카테고리 이름으로 기사를 표시하고 user_id 대신 user_name으로 기사를 표시하고 싶습니다.이 쿼리처럼 시도합니다 작동합니다!
$articles =DB::table('articles')
->join('categories', 'articles.id', '=', 'categories.id')
->join('users', 'users.id', '=', 'articles.user_id')
->select('articles.id','articles.title','articles.body','users.username', 'category.name')
->get();
그러나 나는 Eloquent 방식으로하고 싶습니다. 제발, 어떻게해야합니까?
Eloquent를 사용하면 관계형 데이터를 매우 쉽게 검색 할 수 있습니다. Laravel 5의 시나리오로 다음 예제를 확인하십시오.
세 가지 모델이 있습니다.
1) 기사 (사용자 및 카테고리에 속)
2) 카테고리 (기사가 많음)
3) 사용자 (문서가 많음)
1) Article.php
<?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');
}
}
2) Category.php
<?php
namespace App\Models;
use Eloquent;
class Category extends Eloquent
{
protected $table = "categories";
public function articles()
{
return $this->hasMany('App\Models\Article');
}
}
3) User.php
<?php
namespace App\Models;
use Eloquent;
class User extends Eloquent
{
protected $table = 'users';
public function articles()
{
return $this->hasMany('App\Models\Article');
}
}
모델의 데이터베이스 관계 및 설정을 이해해야합니다. 사용자는 많은 기사를 가지고 있습니다. 카테고리에는 많은 기사가 있습니다. 기사는 사용자 및 카테고리에 속합니다. Laravel에서 관계를 설정하면 관련 정보를 쉽게 검색 할 수 있습니다.
For example, if you want to retrieve an article by using the user and category, you would need to write:
$article = \App\Models\Article::with(['user','category'])->first();
and you can use this like so:
//retrieve user name
$article->user->user_name
//retrieve category name
$article->category->category_name
In another case, you might need to retrieve all the articles within a category, or retrieve all of a specific user`s articles. You can write it like this:
$categories = \App\Models\Category::with('articles')->get();
$users = \App\Models\Category::with('users')->get();
You can learn more at http://laravel.com/docs/5.0/eloquent
Try:
$articles = DB::table('articles')
->select('articles.id as articles_id', ..... )
->join('categories', 'articles.categories_id', '=', 'categories.id')
->join('users', 'articles.user_id', '=', 'user.id')
->get();
참고URL : https://stackoverflow.com/questions/29165410/how-to-join-three-table-by-laravel-eloquent-model
'Programing' 카테고리의 다른 글
큰 github 저장소를 푸시하면 "unable to push to unqualified destination : master"로 실패합니다. (0) | 2020.12.01 |
---|---|
numpy.array () 데이터를 올바르게 저장하고로드하는 방법은 무엇입니까? (0) | 2020.12.01 |
iPhone UIWebview : 숫자 키보드를 강제하는 방법? (0) | 2020.12.01 |
Jmeter 대안 (0) | 2020.12.01 |
LaTex 턱받이 소스 컴파일 (0) | 2020.12.01 |