10 ویژگی Eloquent لاراول که ممکن هست از آنها استفاده نکرده باشید
لاراول یک فریمورکیه که پر از ویژگیه ، ممکن شما خیلی از اونها رو توی داکیومنت خودش پیدا نکنید.
این جا من بعضی از ویژگی های eloquent رو توی لاراول بهتون میگم .
1- دریافت مقادیر اصلی رکورد مدل :
بعد از تغییر دادن یه رکورد در eloquent شما میتونید با استفاده از متد getOriginal() مقادیر اصلی این رکورد رو دریافت کنید :
$user = App\User::first();
$user->name; //John$user->name = "Peter" //Peter$user->getOriginal('name'); //John
$user->getOriginal(); //Original $user record
2- چک کنید اگر مدل تغییر کرده : (اینو خودم نمیدونستم تازه فهمیدم)
چک میکنید اگر مدل یا attribute مدل تغییر کرده است با استفاده از isDirty() :
$user = App\User::first();
$user->isDirty(); //false$user->name = "Peter"
$user->isDirty(); //true
همچنین میتونید چک کنید attribute تغییر کرده است یا نه ؟
$user->isDirty('name'); //true
$user->isDirty('age'); //false
3- شما همچنین میتونید attribute هایی که تغییر کرده رو با استفاده از متد isChanges() دریافت کنید :
$user->getChanges();
//[
// "name" => "Peter",
// ]
4- توی مدل های لاراول میتونید از softDelete استفاده کنید که یه ستون به جدولتون اضافه میکنه به نام deleted_at حالا شما شاید بخواین این ستون رو نامشو تغییر بدین :
class User extends Model
{
use SoftDeletes;
* The name of the "deleted at" column.
*
* @var string
*/
const DELETED_AT = 'is_deleted';
}
یا با استفاده از accessor :
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(); // This will update both user and phone record in DB
6- بعضی وقات ها شما میخواین از یه مدل یه نمونه دیگه داشته باشین ولی مدل اولیه که مقدار دادین از بین نره برای این کار میتونید با استفاده از متد fresh() مدل خودتون رو reload کنید :
$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- بعضی وقت ها هم هستش شما میخواید یه مدل رو که مقدار دهی کردین برگدونید حالت اولش این کار و میتونید با استفاده از متد 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
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() یا findOrFail() استفاده میکنید بهش بگید چه attribute هایی رو میخواید اون فقط همون ها رو واستون میاره :
$user = App\User::find(1, ['name', 'age']);
$user = App\User::findOrFail(1, ['name', 'age']);
امیدوارم واستون مفید باشه ...
در ضمن من این مقاله رو اول از اینجا خوندم.
مطلبی دیگر از این انتشارات
حملات SQL Injection و XSS چیست؟ چگونه می توان از این حملات جلوگیری کرد؟
مطلبی دیگر از این انتشارات
چند مورد از Best Practice های توسعه در جنگو به همراه جایزه
مطلبی دیگر از این انتشارات
دانلود آموزش sql - آموزش گام به گام و معرفی بهترین منابع رایگان