> PHP 프레임워크 > Laravel > Laravel Eloquent 스킬 공유 (예제 설명)

Laravel Eloquent 스킬 공유 (예제 설명)

不言
풀어 주다: 2019-01-23 10:41:50
앞으로
2440명이 탐색했습니다.

이 글은 Laravel Eloquent에 대한 기술 공유(예제)를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Laravel은 기능이 풍부한 프레임워크입니다. 그러나 공식 문서에서 사용 가능한 모든 기능을 찾을 수는 없습니다. 다음은 여러분이 알지 못할 수도 있는 몇 가지 기능입니다.

1. 원본 속성 가져오기

Eloquent 모델 레코드를 수정할 때 getOriginal() 메소드를 호출하여 레코드의 원래 속성을 가져올 수 있습니다

$user = App\User::first();
$user->name;                   //John

$user->name = "Peter";         //Peter

$user->getOriginal('name');    //John
$user->getOriginal();          //原始 $user 记录
로그인 후 복사

2.

isDirty( ) 메소드를 사용하여 모델이나 특정 속성이 수정되었는지 확인하세요.

$user = App\User::first();
$user->isDirty();          //false

$user->name = "Peter";
$user->isDirty();          //true
로그인 후 복사
지정된 속성이 수정되었는지 확인할 수도 있습니다.

$user->isDirty('name');    //true
$user->isDirty('age');     //false
로그인 후 복사

3. 변경된 속성을 가져옵니다

getChanges()를 사용하여 변경된 속성을 가져옵니다.

$user->getChanges()

//[
     "name" => "Peter",
  ]
로그인 후 복사
참고: 이는 syncChanges()를 사용하여 모델을 저장하거나 업데이트를 동기화하는 경우에만 적용됩니다. field

기본적으로 Laravel은 삭제된_at 필드를 사용하여 소프트 삭제를 처리합니다. DELETED_AT 속성을 정의하여 변경할 수 있습니다.

class User extends Model
{
    use SoftDeletes;

     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'is_deleted';
}
로그인 후 복사
또는 액세스 정의

class User extends Model
{
    use SoftDeletes;

    public function getDeletedAtColumn()
    {
        return 'is_deleted';
    }
}
로그인 후 복사

5. 모델 및 관계 저장

push() 메서드를 사용하여 모델과 해당 관계를 저장할 수 있습니다.

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

$user = User::first();
$user->name = "Peter";

$user->phone->number = '1234567890';

$user->push(); // 这将更新数据库中的用户和电话
로그인 후 복사

6. 모델을 다시 로드하세요

데이터베이스에서 모델을 다시 로드하려면 fresh()를 사용하세요.

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。 例:数据库又插入一条 “name” 为 “Peter” 的数据。

$updatedUser = $user->fresh();
$updatedUser->name;       // Peter

$user->name;              // John
로그인 후 복사
7. 기존 모델 다시 로드

refresh() 메서드를 사용하여 데이터베이스에서 새 값으로 기존 모델을 다시 로드할 수 있습니다.

$user = App\User::first();
$user->name;               // John

// user 表被其他进程修改。例: “name” 被修改为 “Peter” 。

$user->refresh();
$user->name;              // Peter
로그인 후 복사
참고: 새로 고침()은 모델의 관련 모델 데이터도 업데이트합니다.

8. 모델이 동일한지 확인

is() 메서드를 사용하여 두 모델이 동일한 기본 키를 갖고 동일한 테이블에 속하는지 확인합니다.

$user = App\User::find(1);
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);

$user->is($sameUser);       // true
$user->is($diffUser);       // false
로그인 후 복사

9. 모델 복제

Replicate() 메서드를 사용하여 모델을 새 개체에 복사할 수 있습니다.

$user = App\User::find(1);
$newUser = $user->replicate();

$newUser->save();
로그인 후 복사

10. find() 메소드에 찾을 속성을 지정하세요

find()나 findOrFail() 메소드를 사용할 때, 찾을 속성을 지정하려면 두 번째 매개변수를 전달하세요.

$user = App\User::find(1, ['name', 'age']);

$user = App\User::findOrFail(1, ['name', 'age']);
로그인 후 복사

위 내용은 Laravel Eloquent 스킬 공유 (예제 설명)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿