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

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

不言
不言앞으로
2019-01-23 10:41:502314검색

이 글은 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으로 문의하시기 바랍니다. 삭제