Menu
Olek Kaim
  • PHP
  • Laravel
  • O mnie
  • Inne
Olek Kaim
Laravel Eloquent przydatne funkcje, ukryte funkcje laravel, blog, programowanie

9 funkcji Laravel Eloquent, których nie ma w oficjalnej dokumentacji

Napisano dnia 25 maja 20194 sierpnia 2019

Laravel jest bogatym w funkcje frameworkiem. Aczkolwiek poniższych przykładów nie znajdziesz w oficjalnej dokumentacji Laravela.

Spis treści
1) Oryginalne atrybuty
2) Sprawdź czy w modelu nastąpiły zmiany
3) Historia zmian w modelu
4) Aktualizacja modelu wraz z relacją
5) Odśwież aktualny model
6) Przeładuj istniejący model
7) Porównaj modele
8) Sklonuj model
9) Atrybuty w find() i findOrFail()

Oryginalne atrybuty

Po aktualizacji danego rekordu można pobrać jego oryginalną wartość.

$user = App\User::first();
$user->name;                    //Olek
$user->name = "Filip";          //Filip
$user->getOriginal('name');     //Olek
$user->getOriginal();           //Oryginalny rekord $user z name Olek

Sprawdź czy w modelu nastąpiły zmiany

Metoda isDirty() zwróci true jeśli model był aktualizowany, a false kiedy w modelu nie nastąpiły żadne zmiany.

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

Również można sprawdzić czy dany atrybut był zmieniany.

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

Historia zmian w modelu

Aby otrzymać taką historię trzeba odwołać się do metody getChanges().

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

Aktualizacja modelu wraz z relacją

Możesz zapisać model, jak i relację tego modelu za jednym razem używając metody push().

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}
$user = User::first();
$user->name = "Filip";

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

$user->push();

Odśwież aktualny model

Używając metody fresh() można przeładować model z nowymi atrybutami.

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

//aktualizacja name na 'Filip'

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

$user->name;              //Olek

Przeładuj istniejący model

Aby odświeżyć istniejący model należy użyć metody refresh().

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

//zmiana name na 'Filip'

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

Porównaj modele

Tutaj z pomocą przychodzi metoda is().

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

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

Sklonuj model

Przykład użycia metody replicate().

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

Atrybuty w find() i findOrFail()

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

Więcej ciekawych funkcji znajdziesz tutaj https://laravel.com/api/5.6/Illuminate/Database/Eloquent/Model.html

Najnowsze wpisy

  • Git – własna komenda
  • Laravel – popularne paczki, które są w większości projektów.
  • SOAP PHP – garść przykładów i teorii.
  • 9 funkcji Laravel Eloquent, których nie ma w oficjalnej dokumentacji
  • Monitoruj stronę w sieci – Google Search Console

Kategorie

  • Aktualności
  • Inne
  • Laravel
  • PHP
©2021 Olek Kaim | Powered by SuperbThemes & WordPress