Laravel orqali JSON API yaratish: Model, Factory va Seederlar (2-qism)

Laravel orqali JSON API yaratish: Model, Factory va Seederlar (2-qism)

O'tgan (Laravel orqali JSON API yaratish: Asosiy tushunchalar (1-qism)) seriyamizda asosiy tushunchalar bilan tanishib o'tgan edik. API nima qilayotganiga va ushbu kichik seriyalar mobaynida qanday funktsiyalarga erishishimiz mumkinligini ko'rib chiqgan edik. JSON API-ni yaratmoqchi ekanligimizni va nima uchun buni XML-qilmasdan JSON ning o'zida qilish afzalligini ko'rib o'tgan edik. ( Vaqt muammosi tufayli seriyalar orasida vaqt cho'zilib ketdi)

Ishni boshlash

Dastlab, biz xizmatimizga ta'sir qiladigan ba'zi bir ma'lumotlarga ega bo'lishimiz kerak. Ushbu seriyada biz ismlar, manzillar, elektron pochta manzillari va aloqa raqamlari bilan asosiy Contacts jadvalini yaratamiz. Shunday qilib, ba'zi ma'lumotlarni yarataylik!

Ishni boshlashdan oldin Laravel Framework sizda o'rnatilgan bo'lishi lozim. (Oxirgi Versiya Laravel 6.x)

https://laravel.com/docs/5.8/installation (Ayni seriya uchun ishlatilgan versiya deyarli farq yo'q)

https://laravel.com/docs/6.x/installation

O'rnatishni ko'rsatib o'tirmadim. Chunki ishni boshlash juda oson va o'rnatish uchun konsol ning o'zi yetarli.

php artisan make:model Contact --all

Yuqoridagi buyruq (command) orqali biz barcha resurslarni yaratib oldik. Bunda bizga quyidagi fayllar yaratilib beriladi.

  • app\Contact.php
  • app\Http\Controllers\ContactController.php
  • app\database\migrations\XXXX_XX_XX_124212_create_contacts_table.php
  • app\database\factories\ContactFactory.php

Yuqorida bizga kerakli barcha fayllar yaratilib berildi. Bularni biz ish jarayonimizda ko'rib chiqamiz

Migration

Bizdagi Contact uchun biz ko'rsatishimiz kerak bo'lgan; nomi, elektron pochta manzili, aloqa raqami va manzili. up() funktsiyasiga ushbu maydonlarni qo'shamiz.

Bizdagi Migration faylimiz quyidagicha ko'rinishni oladi:

<?php
class CreateContactsTable extends Migration {
    public function up() {
        Schema::create('contacts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email');
            $table->string('contact_number');
            $table->string('address');
            $table->timestamps();
        });
    }
    public function down() {
        Schema::dropIfExists('contacts');
    }
}

Bu yerda biz MB uchun kerakli maydonlarni yaratib oldik.

Factory

Bizda ba'zi ma'lumotlarga ega bo'lish uchun jadvallar mavjud. Laravelda biz factory larni dastlabki foydalanish jarayoni uchun ideal bo'lgan soxta ma'lumotlarni yaratish uchun foydalanishimiz mumkin.

Ushbu app\database\factories\ContactFactory.php faylini ochib quyidagilarni qiling;

<?php
/* @var $factory \Illuminate\Database\Eloquent\Factory */
use App\Contact;
use Faker\Generator as Faker;
$factory->define(Contact::class, function (Faker $faker) {
    return [
    'name' => $faker->name,
    'email' => $faker->safeEmail,
    'contact_number' => $faker->phoneNumber,
    'address' => $faker->streetAddress
    ];
});

Model

Bizda jadval mavjud, ba'zi "soxta" ma'lumotlar mavjud, ammo hozirda - ma'lumotlarni kirita olmaymiz, chunki Model hali hech qanday xususiyatlarga ega emas. Laravelning "o'ziga xos" xususiyatlaridan biri shundaki, Modelning barcha xususiyatlari himoya qilinadi. Bu ommaviy murojatlarni to'xtatish yohud tartibda saqlash uchun.

Demak model bizda quyidagi parametrlarga ega:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
    protected $fillable = [
        'name',
        'email',
        'contact_number',
        'address',
    ];
}

Seeder

Shunday qilib, biz ma'lumotlarni to'ldirish uchun seeder yaratamiz. Har doim konsoldan asosiy buyruqlarini ishlatish menga unchalik yoqmaydi, shuning uchun seederlarni avtomatlashtirishning eng oson usuli bo'ladi. Konsoldan foydalanib, biz seeder sinfini yaratamiz;

php artisan make:seeder ContactSeeder

Bu biz ma'lumotlarni joylashtirmoqchi bo'lgan app\database\seeds\ContactSeeder faylini yaratadi va bizga ma'lumotlar bazasi uchun ba'zi ma'lumotlarni beradi va quyidagilar uchun faylni yangilab olamiz

<?php
use Illuminate\Database\Seeder;
use App\Contact;
class ContactSeeder extends Seeder
{
    /**
    * Run the database seeds.
    *
    * @return void
    */
    public function run()
    {
        factory(Contact::class, 10)->create();
    }
}

Endi esa biz kerakli vaqtda istalgan ma'lumotlarni boshqarishimiz uchun $this->call(ContactSeeder::class) qismini kiritib ketishimizning o'zi kifoya

Barchasini birga olib kelish

Buyruq satridan biz barcha fayllarimizni ishga tushirishimiz va ma'lumotlarning mavjudligini tekshirishimiz mumkin.

php artisan migrate:fresh --seed

Bu bizning ma'lumotlar bazamizni tozalaydi va barcha migratsiyalarni keyin esa asosiy DatabaseSeeder class ni (o'z navbatida bizning ContactSeeder-ni ) ishga tushiradi.

Va asosiy ishimizni yakunlagan holda barchasini ishga tushurib olamiz Bizda qandaydir feyk ma'lumotlar paydo bo'ladi va biz ular bilan keyinchalik ishimiz davomida foydalanib boramiz.


Xulosa

Endi bizda ma'lumotlar bor, biz uni Internet orqali tarqatishimiz va foydalanuvchilarimizga / mijozlarimizga BREAD funktsiyalarini bajarishga imkon berishimiz kerak.

Keyingi maqolalarimizda asosiy qismlar bilan ishlashga o'tamiz. Ya'ni COntroller, Routes, Authentication kabilarga.

Tushunarsiz joylari yoki tashlab ketilgan qandaydir qism bo'lsa yozib qoldirsangiz keyinchalik to'g'irlab ketishga harakat qilamiz.

laravel json api php 20-Oktabr 21:08 171

Yaqubov O'ktam - Texnoman foydalanuvchisi

Muallif haqida

Yaqubov O'ktam PHP, Laravel/Lumen, CodeIgniter, Java, JavaFX, C#/.NET, ASP.NET, JavaScript, JQuery, VueJS, Python, Windows, Linux, MSSQL/PostgeSQL


Qiziq bo‘ladi:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!