2025. március 18., kedd

Real_estate feladat Laravelben

Telepíts egy új Laravel csomagot:

laravel new real_estates_api

válaszd a breeze -t és az api-t és és a mysql-t

nyisd meg a mappát vagy: 

cd real-estates-api

lépj be 

állítsd be a .env fájl tartalmát:

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=real_estates

DB_USERNAME=root

DB_PASSWORD=

php artisan migrate

3. Migráció létrehozása az apartments táblához

Hozz létre egy migrációt az apartments tábla számára:

php artisan make:migration create_apartments_table

Szerkeszd a database/migrations/xxxx_xx_xx_xxxxxx_create_apartments_table.php fájlt:

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;


return new class extends Migration {

    public function up(): void

    {

        Schema::create('apartments', function (Blueprint $table) {

            $table->id();

            $table->string('address');

            $table->string('city');

            $table->string('postal_code');

            $table->integer('size');

            $table->integer('rooms');

            $table->integer('price');

            $table->string('owner_name');

            $table->string('owner_phone');

            $table->text('description')->nullable();

            $table->string('image_url')->nullable();

            $table->timestamps();

        });

Futtasd a migrációt:

php artisan migrate

4. Modell létrehozása

Hozz létre egy modellt az apartments táblához:

php artisan make:model Apartment

Nyisd meg a app/Models/Apartment.php fájlt és szerkeszd:

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

class Apartment extends Model

{

    use HasFactory;

    protected $fillable = [

        'address', 'city', 'postal_code', 'size', 'rooms', 

        'price', 'owner_name', 'owner_phone', 'description', 'image_url'

    ];

}

A $fillable tömb biztosítja, hogy ezek az adatok tömegesen kitölthetők (mass assignment).

5. Controller létrehozása

Készítsd el az API controllert:

php artisan make:controller ApartmentController --api

Nyisd meg a app/Http/Controllers/ApartmentController.php fájlt és szerkeszd:

namespace App\Http\Controllers;

use App\Models\Apartment;

use Illuminate\Http\Request;

class ApartmentController extends Controller

{

    // **Összes lakás lekérése**

    public function index()

    {

        return response()->json(['status' => 'success', 'data' => Apartment::all()], 200);

    }

    // **Egy adott lakás lekérése ID alapján**

    public function show($id)

    {

        $apartment = Apartment::find($id);

        if (!$apartment) {

            return response()->json(['status' => 'error', 'message' => 'Lakás nem található.'], 404);

        }

        return response()->json(['status' => 'success', 'data' => $apartment], 200);

    }


    // **Új lakás létrehozása**

    public function store(Request $request)

    {

        $request->validate([

            'address' => 'required|string',

            'city' => 'required|string',

            'postal_code' => 'required|string',

            'size' => 'required|integer',

            'rooms' => 'required|integer',

            'price' => 'required|integer',

            'owner_name' => 'required|string',

            'owner_phone' => 'required|string',

            'description' => 'nullable|string',

            'image_url' => 'nullable|string',

        ]);

        $apartment = Apartment::create($request->all());

        return response()->json(['status' => 'success', 'message' => 'Lakás sikeresen létrehozva.', 'data' => $apartment], 201);

    }

    // **Lakás adatainak frissítése**

    public function update(Request $request, $id)

    {

        $apartment = Apartment::find($id);

        if (!$apartment) {

            return response()->json(['status' => 'error', 'message' => 'Lakás nem található.'], 404);

        }

        $request->validate([

            'address' => 'string',

            'city' => 'string',

            'postal_code' => 'string',

            'size' => 'integer',

            'rooms' => 'integer',

            'price' => 'integer',

            'owner_name' => 'string',

            'owner_phone' => 'string',

            'description' => 'nullable|string',

            'image_url' => 'nullable|string',

        ]);

        $apartment->update($request->all());

        return response()->json(['status' => 'success', 'message' => 'Lakás sikeresen frissítve.', 'data' => $apartment], 200);

    }

    // **Lakás törlése**

    public function destroy($id)

    {

        $apartment = Apartment::find($id);

        if (!$apartment) {

            return response()->json(['status' => 'error', 'message' => 'Lakás nem található.'], 404);

        }

        $apartment->delete();

        return response()->json(['status' => 'success', 'message' => 'Lakás sikeresen törölve.'], 204);

    }

}

6. API útvonal hozzáadása

Nyisd meg a routes/api.php fájlt, és add hozzá az útvonalakat:

use App\Http\Controllers\ApartmentController;

use Illuminate\Support\Facades\Route;

Route::apiResource('apartments', ApartmentController::class);

Ez automatikusan létrehozza az összes szükséges REST API végpontot:

7. API tesztelése

Indítsd el a Laravel szervert:

php artisan serve

http://127.0.0.1:8000/api/apartments

id alapon való lekérés esetén apartments/3 vagyis /id száma 

Tesztek:


id alapú lekérés:


post:

PUT






Nincsenek megjegyzések:

Megjegyzés küldése

Norvég feladat

A feladathoz szükséges képek, minta és adatbázis elérhetősége: https://github.com/latiza/norv-gfeladat/