[laravel] Elequent
Elequent
Laravel에는 데이터베이스와 상호작용하는 것을 쉽게 만드는 객체 관계 매퍼(ORM - object-relational mapper)인 Eloquent가 포함되어 있습니다. Eloquent를 사용할 때 각 데이터베이스 테이블에는 해당 테이블과 상호작용하는 데 사용되는 해당 "모델"이 있습니다. 데이터베이스 테이블에서 레코드를 검색하는 것 외에도 Eloquent 모델을 사용하면 테이블에서 레코드를 삽입, 업데이트 및 삭제할 수도 있습니다.
기본적인 형태
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Deposit extends Model
{
}
-
protected $table = 'users';
-
public $timestamps = false;
-
const UPDATED_AT = null;
-
const UPDATED_AT = null;
-
$maps = ['bad_number_column' => 'number', 'bad_date_column' => 'date']; // 컬럼 이름 변경
-
$hidden = ['bad_number_column', 'bad_date_column']; // select all 시 출력 금지
-
$appends = ['number', 'date'];
-
protected $fillable = ['email', 'password'];
alias 설정
방법 1
model에서 테이블 명을 설정할때 'as' 로서 alias 설정
protected $table = 'users as u';
User::where('u.id', 1229)->select('u.email')->get();
방법 2 ( 추천)
query 작성시 'from'을 사용하여 alias 설정
단점으로는 현재 Model이 softDelete를 사용할 경우 "Unknown column 'table.deleted_at'" 에러 발생
$query = Model::from('table as alias')->get();
만약 모델이 SoftDeletes를 사용한다면 아래와 같이 query를 변경하여 사용한다.
$query = Model::from('table as alias')->withTrashed()->whereNull("alias.deleted_at")->get();
방법 3
select를 사용하는 방식
$users = DB::select('select * from students as std');
방법 4
table을 사용하는 방식
DB::table('students as std')