내가 한 노력들

[ codeigniter 4 ] Model을 이용해서, DB의 데이터 접근 & 디버그 본문

IT 공부/CodeIgniter

[ codeigniter 4 ] Model을 이용해서, DB의 데이터 접근 & 디버그

JONGI-N CHOI 2022. 3. 8. 17:45

모든 데이터 가져오기

App\Models\TaskModel.php

<?php

namespace App\Models;

use CodeIgniter\Model;

class TaskModel extends Model
{
    protected $table = 'task';
}

task table에 접근하기 위해서, protected $table 속성에 'task'값을 넣어줍니다. 

 

App\Controller\Task.php

<?php

namespace App\Controllers;

use App\Controllers\BaseController;

class Task extends BaseController
{
    public function index()
    {
        $taskModel = model('TaskModel');
        $data = $taskModel->findAll();

        return view('Task/index', ['tasks' => $data]);
    }
}

위에서 작성한 TaskModel 을 참조하여, codeigniter에서 제공하는 findAll() 메소드를 이용하면, 모든 레코드를 가져 올 수 있습니다.

 

받아온 data를 view에 전달합니다.

 

App\Views\Task\index.php

<h1>Welcome To the Task Page</h1>

<ul>
    <?php foreach($tasks as $task): ?>
        <li>
            <?= $task['id'] ?>
            <?= $task['description'] ?>
        </li>
    <?php endforeach; ?>
</ul>

controller에서 받은 data를 list형태로 뿌려줍니다. 

 

특정 ID갑의 레코드만 가져오기 

위에선 findAll()를 이용해서, 모든 데이터를 가져왔고, find() 메소드에  primary인 id값을 전달함으로써 특정 id의 레코드 데이터만 가져올 수 있습니다.  

public function show($id)
{
    $taskModel = model('TaskModel');
    $data = $taskModel->find($id);

    return view('Task/show', [
        'data' => $data,
    ]);
}

URL 파라미터로 $id값을 받아와서 find()에 전달합니다. 

받아온 data를 show.php에 전달합니다. 

 

<h1>Welcome To the Task Page</h1>

<dl>
    <dt>ID</dt>
    <dd><?= $data['id'] ?></dd>

    <dt>Description</dt>
    <dd><?= $data['description'] ?></dd>

    <dt>Creatad_at</dt>
    <dd><?= $data['created_at'] ?></dd>

    <dt>Updated_at</dt>
    <dd><?= $data['updated_at'] ?></dd>
</dl>

dl태그를 이용해서 각 컬럼과 값을 표현합니다. 

 

 


위에서 database로부터 값을 가져올 떄, findAll()이나 find()를 사용함으로 SQL의 내용을 알 수 없습니다. 

그러한 SQL을 확인하거나, 그 밖에도 여러가지 디버그를 하고 싶은 경우에 사용할 수 있는 방법 두가지를 설명하겠습니다.

 

1. .env 설정

#--------------------------------------------------------------------
# APP
#--------------------------------------------------------------------

app.baseURL = 'http://taskapp.localhost'

baseURL에 현재 브라우저에서 우리의 프로젝트에 접근할 수 있는 URL을 적어줍니다. 

 

그리고 브라우저를 다시 확인해보면 우측하단에, 위와 같은 icon이 하나 생깁니다. 

 

버튼을 클릭하면, 여러가지 옵션이 나타나게되고, 이 옵션들을 통해서 디버그할 수 있습니다. 

 

view layout구조가 어떤식인지 확인하거나 

요청되는 값들을 한 눈에 볼 수 있거나 

 

위에서 말했던, SQL문도 확인할 수 있습니다.

 

 

2. dd()를 이용

PHP에서는 디버그나, 중간중간 값을 출력하고 싶은 경우에 var_dump(); + exit; 를 사용하는 경우가 많습니다. 

이 두가지를 합친 기능이 dd()입니다. 

public function show($id)
{
    $taskModel = model('TaskModel');
    $data = $taskModel->find($id);

    dd($data)

    return view('Task/show', [
        'data' => $data,
    ]);
}

 

그러면, 아까 icon을 눌러 확인했던 것처럼 해당 $data 변수의 값을 출력할 수 있습니다.