Автоматты аударма пайдаланылды

Laravel моделінің оқиғаларға арналған нұсқаулығы

Кіріспе

Laravel, ең танымал PHP шеңберлерінің бірі, веб-қосымшаларды әзірлеуге арналған құралдардың қуатты жиынтығын ұсынады. Осындай құралдардың бірі-модельдік оқиғалар (Model Events). Бұл оқиғалар модельдің өмірлік циклінің әртүрлі сәттеріне жауап беруге мүмкіндік береді, мысалы, құру, жаңарту, жою және басқа мәліметтер базасының операциялары. Бұл мақалада біз Laravel-де модельдік оқиғаларды қалай пайдалану керектігін, оқиғалардың қандай түрлері бар екенін және олар сіздің қосымшаңызды жасауға қалай көмектесетінін қарастырамыз.

Модельдің негізгі оқиғалары

Laravel өз модельдерінде қолдануға болатын бірқатар кіріктірілген оқиғаларды ұсынады. Мұнда модельдің негізгі оқиғаларының тізімі берілген:

  1. Жасау: дерекқорда жаңа жазба жасамас бұрын шақырылады.
  2. Жасалған: дерекқор жазбасын сәтті жасағаннан кейін шақырылады.
  3. Жаңарту: бар жазбаны жаңартпас бұрын шақырылады.
  4. Жаңартылған: жазбаны сәтті жаңартқаннан кейін шақырылады.
  5. Сақтау: жасау немесе жаңарту болсын, жазбаны сақтамас бұрын шақырылады.
  6. Сақталған: жазбаны сәтті сақтағаннан кейін шақырылады.
  7. Жою: жазбаны жоймас бұрын шақырылады.
  8. Жойылған: жазбаны сәтті жойғаннан кейін шақырылады.
  9. Қалпына келтіру: жазбаны Себеттен қалпына келтірмес бұрын шақырылады (егер жұмсақ жою қолданылса).
  10. Қалпына келтірілді: жазбаны сәтті қалпына келтіргеннен кейін шақырылады.

Бұл оқиғалар логинг, деректерді тексеру, байланысты деректерді синхрондау және модель деректерін өзгерту кезінде орындалатын басқа тапсырмалар сияқты қосымша әрекеттерді орындауға мүмкіндік береді.

Модель оқиғаларын тіркеу

Laravel-де модель оқиғаларын тіркеу үшін модельдегі жүктеу әдісін қолдануға болады. Boot әдісінің ішінде сіз әртүрлі оқиғаларға арналған өңдеушілерді анықтай аласыз. Міне, мұны қалай жасауға болатынының мысалы:

use App\Models\Post;
use Illuminate\Support\Facades\Log;

class Post extends Model
{
    protected static function boot()
    {
        parent::boot();

        static::creating(function ($post) {
            Log:: info ('жаңа жазба жасау:', ['title' = >p post - >title]);
        });

        static::updating(function ($post) {
            Log:: info ('жазбаны жаңарту:', ['title' = >p post - >title]);
        });

        static::deleting(function ($post) {
            Log:: info ('жазбаны жою:', ['title' = >p post - >title]);
        });
    }
}

Бұл мысалда біз creating, updating және deleting оқиғалары үшін өңдеушілерді тіркейміз. Осы әрекеттердің бірі post моделімен орындалған сайын журналға тиісті хабарлама жазылады.

Оқиға тыңдаушыларын құру

Laravel-де сіз модельдік оқиғаларды өңдеу үшін бөлек тыңдаушылар жасай аласыз. Бұл кодты жақсырақ ұйымдастыруға және оны оқуға мүмкіндік береді. Мысалы, пайдаланушыға хабарлама жіберетін created оқиғасы үшін тыңдаушы жасауға болады:

namespace App\Listeners;

use App\Events\PostCreated;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use App\Notifications\PostCreatedNotification;

class SendPostCreatedNotification
{
    public function handle(PostCreated $event)
    {
        $event->post->user->notify(new PostCreatedNotification($event->post));
    }
}

Содан кейін бұл тыңдаушыны EventServiceProvider файлына тіркеуге болады:

protected $listen = [
    'App\Events\PostCreated' => [
        'App\Listeners\SendPostCreatedNotification',
    ],
];

Қорытынды

Laravel-дегі модельдік оқиғалар-бұл модельдердегі өзгерістерге жауап беруге және логин, валидация және Хабарландырулар сияқты әртүрлі әрекеттерді орындауға мүмкіндік беретін қуатты құрал. Модельдік оқиғаларды қолдана отырып, сіз кодты ұйымдасқан және түсінуді жеңілдету арқылы қосымшаның дамуы мен қолдауын едәуір жеңілдете аласыз.

Бұл механизм деректермен икемді жұмыс істеудің кең мүмкіндіктерін ұсынады және қосымша функционалдылықты модельдің өмірлік цикліне оңай біріктіруге мүмкіндік береді, бұл Laravel-ді веб-қосымшаларды әзірлеуге арналған ең ыңғайлы және қуатты құрылымдардың біріне айналдырады.

Пікірлер 5

Кіру пікір қалдыру үшін

🔥🔥🔥

Жауап беру

Библиотека чем то напоминает Django

Жауап беру