Seringkali dalam proyek, pengguna baru harus melihat contoh data, agar dapat memahami apa sebenarnya yang dilakukan sistem, dan bagaimana menggunakannya. Bagaimana cara menerapkan penyemaian “data palsu” di Laravel, pada setiap pendaftaran pengguna baru?
Kita akan memiliki contoh proyek mini kalender tugas, berdasarkan modul QuickAdminPanel “Tugas+Kalender”, tetapi kode yang sama dapat diterapkan ke proyek Laravel mana pun.
Setiap kali pengguna baru mendaftar, mereka akan diarahkan ke kalender mereka, dengan 10 contoh tugas “palsu” yang sudah diunggulkan, untuk 5 hari mendatang.
Langkah 1. Tugas Pabrik
Pertama, kita membuat kelas Pabrik untuk menentukan data dummy untuk membuat tugas.
database/pabrik/TaskFactory.php:
use App\Task;
use App\TaskStatus;
use Faker\Generator as Faker;
$factory->define(Task::class, function (Faker $faker) {
return [
'name' => $faker->sentence(3),
'description' => $faker->sentence,
'status_id' => TaskStatus::inRandomOrder()->first(),
];
});
Secara umum, milik kita app/Tugas.php modul memiliki bidang yang dapat diisi berikut:
class Task extends Model
{
// ...
protected $fillable = [
'name',
'description',
'status_id',
'due_date',
'created_by_id',
];
Jadi, jika Anda perhatikan, Pabrik tidak mengisi dua kolom tenggat waktu Dan dibuat_oleh_iddan kami akan mengisinya secara manual.
Langkah 2. Registrasi Event Listener dan Seeder
Setiap kali seseorang mendaftar, ada acara yang dipanggil Terdaftardan Anda dapat menambahkan apa pun yang disebut kelas Listener ke dalamnya.
Jadi, pertama-tama, kita membuat kelas yang akan diaktifkan setiap kali peristiwa itu terjadi.
app/Listeners/SeedTestDataForNewUser.php:
namespace App\Listeners;
use App\Task;
use Carbon\CarbonPeriod;
use Illuminate\Auth\Events\Registered;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class SeedTestDataForNewUser
{
/**
* Handle the event.
*
* @param Registered $event
* @return void
*/
public function handle(Registered $event)
{
$period = CarbonPeriod::create(now(), now()->addDays(5));
foreach($period as $date)
{
factory(Task::class, 2)->create([
'due_date' => $date->format('Y-m-d'),
'created_by_id' => $event->user->id,
]);
}
}
}
Seperti yang Anda lihat, hanya ada satu metode menangani() (yang diaktifkan secara otomatis), dan di dalamnya kami melakukan tindakan berikut:
– Buat Periode Karbon selama lima hari mendatang
– Untuk setiap hari tersebut – kami membuat 2 tugas dengan sebuah pabrik, menambahkan dua bidang yang hilang tersebut
– Kami menggunakan $acara->pengguna sebagai parameter pengguna yang berasal dari acara tersebut.
Hal terakhir yang kita perlukan adalah melampirkan pendengar tersebut ke acara tersebut.
Kami pergi ke app/Penyedia/EventServiceProvider.php dan tambahkan dua baris (dicetak tebal):
namespace App\Providers;
use App\Listeners\SeedTestDataForNewUser;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
SeedTestDataForNewUser::class,
],
];
// ...
}
Seperti yang Anda lihat, sudah ada satu pendengar untuk verifikasi email pada saat pendaftaran, jadi kita tinggal menambahkan kelas kita sendiri ke acara yang sama.
Itu saja!
Repositori untuk keseluruhan proyek ini: LaravelDaily/Laravel-New-User-Event-Seeder
News
Berita
News Flash
Blog
Technology
Sports
Sport
Football
Tips
Finance
Berita Terkini
Berita Terbaru
Berita Kekinian
News
Berita Terkini
Olahraga
Pasang Internet Myrepublic
Jasa Import China
Jasa Import Door to Door
Gaming center adalah sebuah tempat atau fasilitas yang menyediakan berbagai perangkat dan layanan untuk bermain video game, baik di PC, konsol, maupun mesin arcade. Gaming center ini bisa dikunjungi oleh siapa saja yang ingin bermain game secara individu atau bersama teman-teman. Beberapa gaming center juga sering digunakan sebagai lokasi turnamen game atau esports.
Comments are closed, but trackbacks and pingbacks are open.