معرفی پکیج Laravel Relationship Events در لاراول
لاراول دارای پکیجهای زیادی است که توسط توسعه دهندگان، جهت سهولت کار با این فریم ورک ایجاد میشوند. در این مقاله از لیداوب به معرفی یکی دیگر از پکیجهای لاراول پرداخته
لاراول دارای پکیجهای زیادی است که توسط توسعه دهندگان، جهت سهولت کار با این فریم ورک ایجاد میشوند. در این مقاله از لیداوب به معرفی یکی دیگر از پکیجهای لاراول پرداختهایم.
Laravel Relationship Events یک پکیج در لاراول است که رویدادهای رابطهای مدل بیشتری را اضافه میکند. این پکیج ویژگیهای زیر را داراست که جهت ثبت شنوندگان (listeners) در متد boot ()
مدل استفاده میشوند:
• HasOneEvents
• HasBelongsToEvents
• HasManyEvents
• HasBelongsToManyEvents
• HasMorphOneEvents
• HasMorphToEvents
• HasMorphManyEvents
• HasMorphToManyEvents
• HasMorphedByManyEvents
در این قسمت، از ویژگیهای که در بالا ذکر شد، مثالی از چند رویداد در یک مدل country
آورده شده است که شامل تعدادی از کاربران است که از ویژگی HasManyEvents
استفاده میکنند.
namespace App\Models;
use App\User;
use Chelout\RelationshipEvents\Concerns\HasManyEvents;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
use HasManyEvents;
protected $fillable = [
'name',
];
public function users()
{
return $this->hasMany(User::class);
}
public static function boot()
{
parent::boot();
static::hasManySaving(function ($parent, $related) {
Log::info("Saving user's country {$parent->name}.");
});
static::hasManySaved(function ($parent, $related) {
Log::info("User's country is now set to {$parent->name}.");
});
}
}
حالت عکس ارتباط با این پکیج نیز ممکن است به صورت زیر باشد:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Chelout\RelationshipEvents\Concerns\HasBelongsToEvents;
class User extends Model
{
use HasBelongsToEvents;
/**
* Get the country associated with the user.
*/
public function country()
{
return $this->belongsTo(Country::class);
}
protected static function boot()
{
parent::boot();
static::belongsToAssociating(function ($relation, $related, $parent) {
Log::info("Associating country {$parent->name} with user.");
});
static::belongsToAssociated(function ($relation, $related, $parent) {
Log::info("User has been assosiated with country {$parent->name}.");
});
}
}
توسط متد associate()
متناوب، میتوانید دو رویداد belongsToAssociating
و belongsToAssociated
را صدا بزنید:
$country = App\Models\Country::first();
$user = factory(User::class)->create([
'name' => 'John Smith',
]);
// Assosiate user with country
// This will fire belongsToAssociating and belongsToAssociated events
$user->country()->associate($country);
میتوانید اطلاعات مربوط به رویدادهای این پکیج را در این لینک به دست آورید. همچنین، میتوانید این پکیج را در GitHub بررسی کنید.
آشنایی با پکیجهای دیگر لاراول در لیداوب:
میتوانید مقالات کاربردی PHP و لاراول را در لیداوب دنبال کنید.
دیدگاه ها
متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند
ورود به سایت