>PHP 프레임워크 >Laravel >Laravel Eloquent의 9가지 유용한 기능을 소개합니다

Laravel Eloquent의 9가지 유용한 기능을 소개합니다

藏色散人
藏色散人앞으로
2021-03-16 17:16:242167검색

다음 laravel튜토리얼 칼럼에서는 Laravel Eloquent의 9가지 유용한 기능을 소개하고 공유하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

Laravel Eloquent의 9가지 유용한 기능을 소개합니다

Laravel Eloquent의 9가지 유용한 기능

Laravel을 사용하는 개발자라면 Eloquent Model의 강력함에 놀라실 수도 있지만, 강력한 표면 아래에는 아직 알려지지 않은 것들이 많이 있습니다. 이 글에서는 Laravel Eloquent의 10가지 강력한 기능을 공유할 것입니다.

1. 더욱 강력해진 find() 메소드
많은 개발자가 find() 메소드를 사용할 때 일반적으로 여기에 ID 매개변수만 전달합니다. 두 번째 매개변수: find() 方法的时候,通常就只是在这里传入一个 ID 的参数,其实我们也是可以传入第二个参数的:find() 方法中指定需要查找的字段

$user = App\User::find(1, ['name', 'age']);
$user = App\User::findOrFail(1, ['name', 'age']);
// 这里面的 name 和 age 字段就是制定只查找这两个字段

2.克隆 Model
直接使用 replicate() 方法即可,这样我们就很容易地创建一个 Model 的副本:

$user = App\User::find(1);
$newUser = $user->replicate();
$newUser->save();
// 这样,$newUser 和 $user 的基本数据就是一样的

3.检查 Model 是否相同
使用 is() 方法检查两个 Model 的 ID 是否一致,是否在同一个表中:

$user = App\User::find(1);
$sameUser = App\User::find(1);
$diffUser = App\User::find(2);
$user->is($sameUser);       // true
$user->is($diffUser);       // false

4.在关联模型中同时保存数据
使用 push() 你可以在保存模型数据的同时,将所关联的数据也保存下来:

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}
$user = User::first();
$user->name = "GeiXue";
$user->phone->number = '1234567890';
$user->push(); 
// 最后这一行 push() 会将 user 的数据和 phone 的数据同时更新到数据库中

5.自定义 deleted_at 字段
如果你使用过 Laravel 的软删除 Soft Delete 的话,你应该就知道其实 Laravel 在标记一个记录为已删除的状态其实是用 deleted_at 这个字段来维护的,其实你是可以自定义这个字段的:

class User extends Model
{
    use SoftDeletes;
     * The name of the "deleted at" column.
     *
     * @var string
     */
    const DELETED_AT = 'deleted_date';
}

或者你这样自定义也可以:

class User extends Model
{
    use SoftDeletes;
    public function getDeletedAtColumn()
    {
        return 'deleted_date';
    }
}

6.获取已修改的 Model 属性
使用 getChanges() 方法获取已被修改的属性:

$user->getChanges()
//[
     "name" => "GeiXue",
  ]

7.检查 Model 是否被修改
使用 isDirty() 方法就可以检测模型中的数据是否被修改:

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

在使用 isDirty() 的时候,你也可以直接检测某个属性是否被修改:

$user->isDirty('name');    //true
$user->isDirty('age');     //false

8.获取 Model 的原始数据
在给 Model 的属性赋予新值的时候,你可以通过 getOriginal() 来获取原来的值:

$user = App\User::first();
$user->name;                   //JellyBool
$user->name = "GeiXue";         //GeiXue
$user->getOriginal('name');    //JellyBool
$user->getOriginal();          //Original $user record

9.刷新 Model 的数据
使用 refresh() 刷新 Model 的数据,这在你使用 tinkerfind() 메서드에서 찾을 필드를 지정하세요

$user = App\User::first();
$user->name;               // JellyBool
// 这个时候在其他地方,该用户的名字被更新为 GeiXue,你可以使用 refresh 来刷新,而不用退出 tinker
$user->refresh(); 
$user->name;              // GeiXue
2. 모델을 복제하세요
replicate() 메서드를 직접 사용하세요. 모델의 복사본을 쉽게 만들 수 있습니다:
rrreee🎜🎜3. 모델이 동일한지 확인하세요🎜🎜두 모델의 ID가 동일한지 확인하려면 is() 메서드를 사용하세요. 동일한 테이블에 있는지 여부: 🎜rrreee🎜🎜4. 관련 모델에 동시에 데이터를 저장합니다. 🎜🎜 push()를 사용하여 저장하는 동안 관련 데이터를 저장할 수 있습니다. 모델 데이터: 🎜 rrreee🎜🎜5.deleted_at 필드를 사용자 정의하세요🎜🎜Laravel의 Soft Delete를 사용한 경우 Laravel은 실제로 레코드를 삭제된 것으로 표시하기 위해 deleted_at를 사용한다는 것을 알아야 합니다. 실제로 이 필드를 사용자 정의할 수 있습니다: 🎜rrreee🎜 또는 다음과 같이 사용자 정의할 수 있습니다: 🎜rrreee🎜🎜6. 수정된 모델 속성 가져오기🎜🎜수정된 속성을 가져오는 방법은 getChanges()입니다. 🎜 rrreee🎜🎜7. 모델이 수정되었는지 확인하세요🎜🎜isDirty() 메서드를 사용하여 모델의 데이터가 수정되었는지 확인하세요. 🎜rrreee🎜isDirty()를 사용하세요. 를 사용하면 속성이 수정되었는지 직접 감지할 수도 있습니다. 🎜rrreee🎜🎜8. 모델의 원본 데이터 가져오기🎜🎜모델의 속성에 새 값을 할당하면 다음을 얻을 수 있습니다. getOriginal()을 통한 원래 값: 🎜rrreee🎜🎜9. 모델 데이터 새로 고침🎜🎜모델 데이터를 새로 고치려면 refresh()를 사용하는 것입니다. tinker를 사용할 때 특히 유용합니다: 🎜rrreee🎜🎜Finally🎜🎜위의 9가지 Eloquent 기능은 실제로 특정 애플리케이션 시나리오에서 매우 유용합니다. Laravel Click을 개발할 때 도움이 되기를 바랍니다. 🎜🎜

위 내용은 Laravel Eloquent의 9가지 유용한 기능을 소개합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제