DB 테이블 이름에 따른 엘로퀀트 이름

엘로퀀트 모델 클래스명이 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 메서드는 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();

데이터 수정 update()

Contact::where('created_at', '<', not()->subYear())
	->update(['longvity' => 'ancient']);

// 또는

$contact = Contact::find(1);
$contact -> update(['longevity' => 'ancient']);