10 Fitur Fasih Laravel Tersembunyi Yang Mungkin Tidak Anda Ketahui
Laravel adalah kerangka kerja yang kaya fitur. Namun, Anda tidak dapat menemukan semua fitur yang tersedia di dokumentasi resmi. Berikut adalah beberapa fitur yang mungkin belum Anda ketahui.
1. Dapatkan atribut asli
Setelah memutasi catatan Eloquent, Anda bisa mendapatkan atribut asli dengan memanggil getOriginal()
$user = App\User::first();
$user->name; //John$user->name = "Peter"; //Peter$user->getOriginal('name'); //John
$user->getOriginal(); //Original $user record
2. Periksa apakah Model berubah
Tentukan apakah model atau atribut yang diberikan telah dimodifikasi menggunakan isDirty()
$user = App\User::first();
$user->isDirty(); //false$user->name = "Peter";
$user->isDirty(); //true
Anda juga dapat memeriksa apakah atribut tertentu diubah.
$user->isDirty('name'); //true
$user->isDirty('age'); //false
3. Dapatkan atribut yang diubah
Ambil atribut model yang diubah menggunakan getChanges()
$user->getChanges()//[
"name" => "Peter",
]
Catatan: Perubahan hanya akan terlihat jika Anda menyimpan model atau menyinkronkan perubahan menggunakan syncChanges()
4. Custom deleted_at
kolom
Secara default, Laravel menangani penghapusan lunak menggunakan kolom delete_at
. Anda dapat mengubahnya dengan mendefinisikan properti DELETED_AT
secara eksplisit.
class User extends Model
{
use SoftDeletes;
* The name of the "deleted at" column.
*
* @var string
*/
const DELETED_AT = 'is_deleted';
}
Atau dengan mendefinisikan accessor.
class User extends Model
{
use SoftDeletes;
public function getDeletedAtColumn()
{
return 'is_deleted';
}
}
5. Simpan model dan hubungan
Anda dapat menyimpan model dan hubungan terkaitnya menggunakan metode 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(); // This will update both user and phone record in DB
6. Muat ulang model baru
Muat ulang instance model baru dari database menggunakan fresh()
$user = App\User::first();
$user->name; // John
// user record get updated by another thread. eg: 'name' changed to // Peter.
$updatedUser = $user->fresh();
$updatedUser->name; // Peter
$user->name; // John
7. Muat ulang model yang ada
Anda dapat memuat ulang model yang ada dengan nilai baru dari database menggunakan refresh()
$user = App\User::first();
$user->name; // John// user record get updated by another thread. eg: 'name' changed to // Peter.$user->refresh();
$user->name; // Peter
Catatan: refresh() juga akan memperbarui relasi yang dimuat dari model yang ada.
8. Periksa apakah modelnya sama
Tentukan apakah dua model memiliki ID yang sama dan termasuk dalam tabel yang sama menggunakan 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. Mengkloning model
Anda dapat mengkloning model menggunakan replica()
. Ini akan membuat salinan model menjadi instance baru yang tidak ada.
$user = App\User::find(1);
$newUser = $user->replicate();$newUser->save();
10. Tentukan atribut dalam metode find()
Saat menggunakan metode find()
atau findOrFail()
Anda dapat menentukan atribut yang akan dipilih sebagai argumen kedua.
$user = App\User::find(1, ['name', 'age']);
$user = App\User::findOrFail(1, ['name', 'age']);