엘로퀀트 모델 클래스명이 SecondaryContact라면 이 모델이 연결되는 테이블명은
secondary_contacts다. 만약 테이블명을 명시적으로 지정하려면 모델 클래스의 $table
속성을 변경한다
protected $table = 'contacts_secondary';
라라벨은 기본적으로 테이블에 id라는 자동으로 증가되는 정수형 기본 키가 있다고 가정한다.
테이블의 기본 키 이름이 다른 경우 모델 클래스의 $primaryKey 속성을 변경한다.
protected $primaryKey = 'contact_id';
또한 키가 자동 증가되지 않게 하려면 다음과 같이 속성값을 지정한다.
public $incrementing = false;
엘로퀀트는 모든 테이블이 created_at 과 updated_at 타임스탬프 칼럼을 가지고 있기를 기대한다.
만약 테이블에 해당 칼럼이 없다면 $timestamp 기능을 비활성화 하자.
public $timestamps = false;
#전체 데이터 조회하기
$allContacts = Contact::all();
#간단한 조건절 추가
$vipContacts = Contact::where('vip', true)->get();
$newestContacts = Contact::orderBy('created_at', 'desc')
->take(10)
->get();
#컨트롤러에서 엘로퀀트의 findOrFail() 메서드 사용하기
// ContactController
public function show($contactId)
{
return view('contacts.show')
->with('contact', Contact::findOrFail($contactId));
}
#레코드 여러 개 조회하기
$vipContacts = Contact::where('vip', true)->get();
#전체 메서드 조회하기 - 가급적이면 get() 메서드 활용하다
#(컬렉션 타입의 인스턴스로 반환된다)
$contacts = Contact::all();
#집계쿼리
$countVips = Contact::where('vip', true)->count();
$sumVotes = Contact::sum('votes');
$averageSkill = User::avg('skill_level');
save 메서드는 save() 메서드를 실행하기 전 까지는 DB에 들어가지 않는다
$contact = new Contact;
$contact -> name = 'Ken Hirata';
$contact -> email = '[email protected]'
$contact -> save();
// 또는
$contact = new Contact([
'name' => 'Ken Hirata'.
'email' => '[email protected]',
]);
$contact -> save();
// 또는
$contact = Contact::make([
'name' => 'Ken Hirata',
'email' => '[email protected]',
]);
$contact -> save();
// 데이터 수정
$contact = Contact::find(1);
$contact -> email = '[email protected]';
$contact -> save();
Contact::where('created_at', '<', not()->subYear())
->update(['longvity' => 'ancient']);
// 또는
$contact = Contact::find(1);
$contact -> update(['longevity' => 'ancient']);