본문 바로가기
IT/PHP

Laravel 8 - CRUD(3)

by Sungjun_ 2021. 1. 5.

CRUD 중에서 Read입니다.

BoardController.php에서 index 메소드를 수정해 작성한 글을 목록을 만들어줍니다.

public function index(){
        return view('boards.index', ['boards' => Board::all() -> sortDesc()]);
    }

 

index 메소드를 위와 같이 변경해줍니다.

boards 테이블에 있는 데이터들을 내림차순으로 가지고와 'boards' 변수($boards)에 저장합니다.

 

그리고 index.blade.php 파일을 수정해줍니다.

@extends('layouts.app')

@section('section')
    <section class="w-2/3 mx-auto mt-8 ">
        <div class="flex w-full justify-between">
            <div class="flex-initial text-2xl text-green-500">게시판</div>
            <div class="flex-initial">
                <a href="{{route('boards.create')}}">
                    <button class="px-4 py-2 text-white bg-blue-500 hover:bg-blue-700">글쓰기</button>
                </a>
            </div>
        </div>
        <div class="w-full mt-8">
            @foreach($boards as $board)
                <table class="w-3/4 mx-auto text-lg">
                    <thead>
                        <tr>
                            <td class="w-1/4"></td>
                            <td class="w-2/4"></td>
                            <td class="w-1/4"></td>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class="border-b mt-2">
                            <td class="w-1/4 text-center">{{$board -> id}}</td>
                            <td class="w-2/4"><a href="{{route('boards.show', $board -> id)}}">{{$board -> title}}</a></td>
                            <td class="w-1/4 text-center">{{$board -> created_at -> format('Y-m-d')}}</td>
                        </tr>
                    </tbody>
                </table>
            @endforeach
        </div>
    </section>
@stop

 

블레이드 문법 foreach를 사용해 $boards에 저장된 정보를 가지고옵니다.

제목을 클릭했을 때, 해당 글로 이동하게 만들었습니다.

 

이제 해당 글을 보기 위한 show 메소드를 추가해야합니다.

BoardController.php에 show 메소드를 추가해줍니다.

public function show($id){
        $board = Board::where('id', $id) -> first();
        return view('boards.show', compact('board'));
    }

 

넘겨받은 id 값이 같은 글을 찾아 show.blade.php 파일로 넘겨줍니다.

web.php에 다음과 같이 라우트를 설정하고 show.blade.php 파일을 만들어줍니다.

 

web.php

Route::get('boards/{board}', [BoardController::class, 'show']) -> name('boards.show');

 

show.blade.php

@extends('layouts.app')

@section('section')
    <section class="w-2/3 mx-auto mt-16">
        <div class="border-b border-gray-300 mb-8 pl-1 pb-2 text-xl font-bold">
            {{$board -> title}}
        </div>
        <div class="text-lg">
            {{$board -> story}}
        </div>
    </section>
@stop

 

이렇게 작성을 해주고 index화면에서 목록에 있는 글을 클릭하면

READ

제목과 내용이 제대로 나오는 것을 볼 수 있습니다.

'IT > PHP' 카테고리의 다른 글

Laravel 8 - CRUD(5)  (1) 2021.01.05
Laravel 8 - CRUD(4)  (0) 2021.01.05
Laravel 8 - CRUD(2)  (0) 2021.01.04
Laravel 8 - CRUD(1)  (0) 2021.01.04
Laravel - 라우트  (0) 2020.12.30

댓글