Laravel'in Bilmediğiniz 10 Anlamlı Özelliği

1359
Laravel'in Bilmediğiniz 10 Anlamlı Özelliği - bimakale.com | bimakale.com
15 Ocak 2024 Pazartesi - 12:52 (4 Ay önce)

Laravel zengin özelliklere sahip bir frameworkdür. Ancak mevcut tüm özellikleri resmi belgelerde bulamazsınız. İşte bilmediğiniz bazı özellikler.

1. Get Original Attributes

Bir Eloquent kaydını mutasyona uğrattıktan sonra getOriginal() öğesini çağırarak orijinal nitelikleri elde edebilirsiniz.

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

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

$user->getOriginal('name');    //Ali
$user->getOriginal();          //Original $user record

 

2. Modelin Değişip Değişmediğini Kontrol Edin

Modelin veya verilen özelliğin isDirty() kullanılarak değiştirilip değiştirilmediğini kontrol edin.

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

$user->name = "Metin";
$user->isDirty();          //true

Belirli bir özelliğin değişip değişmediğini de kontrol edebilirsiniz.

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

 

3. Değiştirilen Özellikleri (Attributes) Alın (getChanges) 

getChanges() kullanarak bir modelin değiştirilmiş niteliklerini öğelerini alabilirsiniz.

$user->getChanges()

//[
     "name" => "Metin",
  ]

Not: Değişiklikler yalnızca modeli kaydederseniz veya değişiklikleri syncChanges() kullanarak senkronize ederseniz.

 

4. Özel deleted_at  Sütunu

Varsayılan olarak Laravel, geçici silme işlemlerini delete_at sütununu kullanarak gerçekleştirir. delete_at  özelliğini açıkça tanımlayarak bunu değiştirebilirsiniz.

class User extends Model
{
       use SoftDeletes;

       * The name of the "deleted at" column.
       *
       * @var string
       */
       const DELETED_AT = 'is_deleted';
}

Veya bir erişimci tanımlayarak bu işlemi yapabilirsiniz.

class User extends Model
{
       use SoftDeletes;

       public function getDeletedAtColumn()
       {
              return 'is_deleted';
       }
}

 

5. Modelleri ve ilişkileri kaydedin

Push() yöntemini kullanarak bir modeli ve ona karşılık gelen ilişkileri kaydedebilirsiniz.

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

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

$user->phone->number = '1234567890';
$user->push(); // Bu, DB'deki hem kullanıcı hem de telefon kaydını güncelleyecektir

 

6. Modeli Yeniden Yükleme

Fresh() kullanarak veritabanından yeni bir model örneğini yeniden yükleyin.

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

// kullanıcı kaydı başka bir iş parçacığı tarafından güncellenir. örneğin: 'name' değiştirildi 
// Metin.

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

 

7. Mevcut Modeli Yeniden Yükleyin

Refresh() işlevini kullanarak mevcut bir modeli veritabanından yeni değerlerle yeniden yükleyebilirsiniz.

$user = App\User::first();
$user->name;               // Ali
// kullanıcı kaydı başka bir iş parçacığı tarafından güncellenir. örneğin: 'name' değiştirildi 
// Metin.

$user->refresh(); 
$user->name;              // Metin

Not: refresh() aynı zamanda mevcut modelin yüklü ilişkilerini de güncelleyecektir

 

8. Modellerin Aynı Olup Olmadığını Kontrol Edin

is() işlevini kullanarak iki modelin aynı kimliğe sahip olup olmadığını ve aynı tabloya ait olup olmadığını belirleyin.

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

$user->is($sameUser);       // true
$user->is($diffUser);       // false

 

9. Bir Modeli Klonlayın

replicate() işlevini kullanarak bir modeli klonlayabilirsiniz. Modelin bir kopyasını yeni, var olmayan bir örneğe oluşturacaktır.

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

 

10. Find() Yönteminde Nitelikleri Belirtin

Find() veya findOrFail() yöntemlerini kullanırken, ikinci argüman olarak seçilecek nitelikleri belirleyebilirsiniz.

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

 


  • Laravel



Yorumlar
Sende Yorumunu Ekle
Kullanıcı
0 karakter