반응형

이번엔 만들어진 모델을 한번 열어보자. 어디에 생겼는지는 저번 시간에 얘기했다.

 

app/Models/Qna.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * @property int      $num
 * @property string   $contents
 * @property string   $email
 * @property string   $username
 * @property DateTime $regdate
 * @property boolean  $status
 */
class Qna extends Model
{
    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'qna';

    /**
     * The primary key for the model.
     *
     * @var string
     */
    protected $primaryKey = 'num';

    /**
     * Attributes that should be mass-assignable.
     *
     * @var array
     */
    protected $fillable = [
        'contents', 'email', 'regdate', 'status', 'username'
    ];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = [
       
    ];

    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [
        'num' => 'int', 'contents' => 'string', 'email' => 'string', 'regdate' => 'datetime', 'status' => 'boolean', 'username' => 'string'
    ];

    /**
     * The attributes that should be mutated to dates.
     *
     * @var array
     */
    protected $dates = [
        'regdate'
    ];

    /**
     * Indicates if the model should be timestamped.
     *
     * @var boolean
     */
    public $timestamps = false;

    // Scopes...

    // Functions ...

    // Relations ...
}

 

기존에 만들어지는 모델과는 조금 다른 모양이다. 

 

이번엔 해당 모델을 사용하는 컨트롤러를 만들어보자. 이것도 명령어를 이용하면 되지만 명령어로 만들어봤자 세부사항까지는 어차피 직접 입력해주어야 한다.

 

app/Http/Controllers/QnaController.php

<?php

namespace App\Http\Controllers;
use App\Models\Qna;
use Illuminate\Http\Request;

class QnaController extends Controller
{
    private $Qna;

    public function __construct(Qna $Qna){
        $this->Qna = $Qna;
    }

    public function index(){
        $Qnas = $this->Qna->latest('regdate')->paginate(10);
        return view('qna.index', compact('Qnas')); //
    }

}

 

모양은 각자 다를 수 있다. 컨트롤러의 파일명과 모델을 인클루드 한것등을 확인해보자.

 

<?php

namespace App\Http\Controllers;
use App\Models\Qna;
use Illuminate\Http\Request;

class QnaController extends Controller
{
    public function index(){
        //Qna::orderBy('regdate', 'desc')->get();
        $Qnas = Qna::latest('regdate')->paginate(10);
        return view('qna.index', compact('Qnas'));
    }

}

 

이렇게 할 수도 있다.

 

$Qnas = Qna::latest('regdate')->paginate(10);

 

이렇게 정렬하려고 하는 컬럼을 지정하지 않으면 자동으로 created_at 컬럼을 찾기 때문에 "Column not found: 1054 Unknown column 'created_at' in 'order clause'" 이런 해당 컬럼이 없다는 에러가 난다. 꼭 수정해야한다.

반응형

+ Recent posts