데이터베이스 시스템에 저장된 데이터를 객체로 표현하기 위한 변환이나, 반대로 객체에 저장된 데이터를
데이터베이스 시스템에 저장하기 위해 데이터를 변환하는 개년을 ORM이라한다.
엘로퀀트는 라라벨이 제공하는 ORM구현체의 이름이다.
테이블을 만들자.
CREATE TABLE AUTHORS(
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(60) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=UTF8 COLLATE=UTF8_UNICODE_CI;
레코드를 삽입하자.
INSERT INTO AUTHORS(email,PASSWORD) VALUES('test@test.com','password')
모델을 만들자.(php artisan)
php artisan make:model Post
php artisan make:model Author
app디렉터리에 파일이 생성되었다.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Author extends Model
{
//
}
*테이블 이름은 복수로 짓고(authors), 모델 이름은 단수로 짓는다(Author).
관례를 따르지 않을 때는 엘로퀀트에게 알려 주어야한다.
class Author extends Model
{
protected $table = 'users';
}
모델 쿼리
조회
>>> App\Author::get();
결과
=> Illuminate\Database\Eloquent\Collection {#703
all: [
App\Author {#705
id: 1,
email: "test@test.com",
password: "password",
},
],
}
QueryException
모델 파일에 public $timestamps = false; 을 입력해줘야지 쿼리예외 에러가 뜨지 않는다.
인스턴스를 테이블에 저장할 때 현재의 타임스탬프 값을 할당한다. 하지만 테이블에 없는 열(컬럼)이므로 열을 만들거나
엘로퀀트에 자동 입력 기능을 끄는 방법으로 해결해야한다.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Author extends Model
{
public $timestamps = false;
}
새모델 인스턴스만들고 테이블에 저장하는 방법
$author = new App\Author;
$author->email = > 'sample@sam.com;
$author->password => '1234';
$author->save();
bcrypt(단방향 해시 함수)
비밀번호 찾기가 원칙적으로 불가. 보안상 안전하다.
App\Author::create([
'email' => 'sample@sam.com',
'password' => bcrypt('1234'),
]);
위 처럼 대량 할당을 사용하기 위해서
Author.php파일에 $fillable, $guarded 프로퍼티를 허용하는 코드를 삽입해야한다.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Author extends Model
{
public $timestamps = false;
public $fillable = ['title', 'body'];
}
'라라벨' 카테고리의 다른 글
Composer (0) | 2019.04.16 |
---|---|
데이터베이스 마이그레이션 (0) | 2019.04.02 |
쿼리빌더 (0) | 2019.03.31 |
데이터베이스 모델(REPL) (0) | 2019.03.31 |
APP_KEY 새로 만들어주기 (0) | 2019.03.28 |