model
๋ชจ๋ธ
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
์๋ ๋ผ๋ผ๋ฒจ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ User๋ชจ๋ธ์ด๋ค.
fillable
๋ก ๋๋ํ ๋น ์ปฌ๋ผ์ด ๊ฐ๋ฅํ๋๋ก ์ง์ ํ ์ ์๊ณ , hidden
ํ๋กํผํฐ๋ก ์กฐํ ์ฟผ๋ฆฌ์ ์ ์ธํ ์ด์ ์ ์ํ ์ ์๋ค.
๋ชจ๋ธ ๋ง๋ค๊ธฐ
$ php artisan make:model Post
$ php artisan make:model Author
์ง์ ํ์ดํํด์ ๋ง๋ค์ด๋ ๋์ง๋ง ์ํฐ์ฆ๋ช
๋ น์ด ์ธํฐํ์ด์ค๋ก ๋ชจ๋ธ์ ๋ผ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑ์ด ๊ฐ๋ฅํ๋ฉฐ app/Models/
ํ์์ ์์ฑ์ด๋๋ค.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
}
์๋์ผ๋ก ์์ ๊ฐ์ด ๋ง๋ค์ด์ง๋๋ฐ Illuminate\Database\Eloquent\Model
๋ฅผ ์์ํ๊ธฐ๋งํ๋ฉด ๋ชจ๋ธ๋ก ์ฌ์ฉ๋๋ค.
๋ณดํต ํ
์ด๋ธ์ด๋ฆ์ ์ฌ๋ฌ์ปฌ๋ผ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ณต์๋ก ์ง์ง๋ง ๋ชจ๋ธ์ ํ๋์ ์ธ์คํด์ค๋ง ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก ๋จ์๋ก ์ง๋๋ค. ์ด๋๋ฌธ์ ์๋์ผ๋ก ๋จ์๊ฐ ๋ณต์๋ก ๋ณ๊ฒฝ๋ ๋งตํ๋๊ณ , ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋งตํ์ ํ๊ณ ์ ํ๋ค๋ฉด protected $table = 'ํน์ ์ด๋ฆ';
์ ์ ์ํด ๋ช
์ํด์ฃผ์ด์ผ ํ๋ค.
tinker
repl
์ ์ฝ์ ํ๊ฒฝ์์ ๋ช
๋ น์ ๋ด๋ฆฌ๊ณ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋๊ตฌ์ด๋ฉฐ tinker๋ ๋ผ๋ผ๋ฒจ์ด ์ ๊ณตํ๋ repl์ด๋ค.
php artisan tinker
๋ก tinker๋ฅผ ์คํํ ์ ์๋ค.
>>> DB::select('SELECT * FROM posts');
>>> DB::insert('INSERT INTO posts(title,body) VALUES(?.?), ['Hello','Hi']);
>>> $posts = DB::select('SELECT * FROM posts');
>>> $posts[0]->title;
>>> $posts = DB::selectOne('SELECT * FROM WHERE id = ?',[1]);
tinker์ฝ์์ ์์ ๊ฐ์ด DB::insert()/selct()
๋ฑ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๊ณ ์ด๋ DB๋ ๋ผ๋ผ๋ฒจ์ ํน์ํ ๋ฌธ๋ฒ์ธ ํ์ฌ๋(Facade)
๋ผ๊ณ ํ๋ค.
์์ ๊ฐ์ด ์ง์ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ์๋ ์์ง๋ง ์ค์ ์์๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค.
์ฟผ๋ฆฌ ๋น๋
SQL๋ฌธ์ฅ์ phpํด๋์ค ๋ฌธ๋ฒ์ผ๋ก ์ฌ์ฉํ ๊ฒ์ผ๋ก ๋ฉ์๋๋ฅผ ํตํด ์๋์ผ๋ก query๋ฅผ buildํด์ค๋ค.
get
>>> DB::table('posts')->get();
>>> DB::table('posts')->first();
>>> DB::table('posts')->find(2);
>>> DB::table('posts')->get(['Hello','id']);
where
>>> DB::table('posts')->where('id', '=', 1)->get();
>>> DB::table('posts')->where('id', 1)->get();
>>> DB::table('posts')->whereId(1)->get();
>>> DB::table('posts')->where(function ($query){query -> where('id',1);})->get();
4๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ฉฐ, ์ฒซ๋ฒ์งธ์ ๊ฐ์ด ์กฐ๊ฑด์ ์ด =
์ผ ๊ฒฝ์ฐ์๋ ์๋ต์ด ๊ฐ๋ฅํ๋ค. 3๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ฉ์๋๋ช
์ ๋ณด๊ณ ๋์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์นด๋ฉํ๊ธฐ๋ฒ
์ผ๋ก ํ๊ธฐํ๋ฉด ๋๊ณ , ๋ณต์กํ ์กฐ๊ฑด์ผ ๊ฒฝ์ฐ์๋ ํด๋ก์ ๋ฅผ ์ด์ฉํ ์๋ ์๋ค.
์ด์ธ์๋ insert(array $v)
,update(associate array $v)
, delete(int $id)
, pluck(string $col, string $key = null)
, limit(int $v)
, orderBy(string $col, string $dir='asc')
, count, distinct,join, union๋ฑ ์ฌ๋งํ SQL๋ฌธ์ ๋ฉ์๋๋ก ํํ๊ฐ๋ฅํ๋ค.
Last updated