【Laravel 쿼리 빌더】join으로 내부 결합해, 결합처의 데이터를 취득하는 방법

laravel의 쿼리 빌더에서 join을 이용한 내부 조인에 대해 간단히 해설해 갑니다.

버전은 6계입니다.

목표



posts 테이블의 user_id와 users 테이블의 id를 내부적으로 결합한다.

posts 테이블


users 테이블





내부 조인을 통해 posts 테이블의 user_id와 users 테이블의 id가 일치하도록 데이터를 검색할 수 있습니다.

SQL로 작성하면 다음과 같습니다.
SELECT *
FROM posts
INNER JOIN users
ON posts.user_id = users.id

샘플 코드



모델 (Post.php)
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

class Post extends Model
{
  public function getUserNameById()
  {
    return DB::table('posts')
            ->join('users', 'posts.user_id', '=', 'users.id')
            ->get();
  }
}


join ( '테이블 이름', '조인 할 테이블 이름. 열', '=', '조인 대상 테이블 이름. 열')
이제 내부 조인이 가능합니다.

덧붙여서 다음과 같이 다시 쓸 수 있습니다.
    return DB::table('posts')
            ->join('users', function($join) {
              $join->on('posts.user_id', 'users.id');
            })
            ->get();

자세한 내용은 laravel 공식을 참조하십시오.
htps : // 세아 rch. 레아도 bぇ. 이 m/? 쿠에 ry = 6. x+% 에 3% 82% 에 F% 에 3% 82% 에 8% 에 3% 83% 아 % 에 3% 83% 93% 에 3% 83%

컨트롤러 (PostController.php)
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;

class PostController extends Controller
{
    public function index()
    {
        $this->posts = new Post();

        $results = $this->posts->getUserNameById();

        return view('posts.index', compact(
            'results',
        ));
    }
}

뷰(index.blade.php)
<table>
    <thead>
      <tr>
        <th>ユーザーID</th>
        <th>ユーザー名</th>
        <th>投稿名</th>
      </tr>
    </thead>
    <tbody>
    @foreach ($results as $result)
      <tr>
        <td>{{ $result->id }}</td>
        <td>{{ $result->name }}</td>
        <td>{{ $result->post_name }}</td>
      </tr>
    @endforeach
    </tbody>
</table>

이런 식으로 데이터를 얻을 수있었습니다.


그 밖에도 쿼리 빌더에 대해 해설한 기사가 있으므로 맞추어 체크 부탁합니다.
참고가되면 LGTM 스톡도!

좋은 웹페이지 즐겨찾기