manto07m пре 2 година
родитељ
комит
46d4b6b649

+ 90 - 0
app/Http/Controllers/FkTestController.php

@@ -0,0 +1,90 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\fkTest;
+use App\Http\Requests\StorefkTestRequest;
+use App\Http\Requests\UpdatefkTestRequest;
+use Illuminate\Http\Request;
+
+class FkTestController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \App\Http\Requests\StorefkTestRequest  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(StorefkTestRequest $request)
+    {
+        //
+        $store = FkTest::create($request->validated());
+
+        return $store;
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\fkTest  $fkTest
+     * @return \Illuminate\Http\Response
+     */
+    public function show(fkTest $fkTest)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\Models\fkTest  $fkTest
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(fkTest $fkTest)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \App\Http\Requests\UpdatefkTestRequest  $request
+     * @param  \App\Models\fkTest  $fkTest
+     * @return \Illuminate\Http\Response
+     */
+    public function update(UpdatefkTestRequest $request, fkTest $fkTest)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\fkTest  $fkTest
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(fkTest $fkTest)
+    {
+        //
+    }
+}

+ 121 - 0
app/Http/Controllers/FooController.php

@@ -0,0 +1,121 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\foo;
+use App\Models\User;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+class FooController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+        //$users = \App\Models\foo::factory(3)->create();
+        $users = Foo::all();
+        $users = Foo::where('id', '>', 3)->first();
+        $name = $this->show($users);
+        return $name;
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+
+        $user = Foo::where('id', '>', 3)->orderBy('id', 'desc')->first();
+        echo ('test');
+        $foo = Foo::Create([
+            'name' => 'test4',
+            'email' => 'foo2222@gmail.com',
+            'fk_tests_id' => 1,
+        ]);
+        return $foo;
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+        $foo = new Foo;
+
+        $foo->name = $request->name;
+        $foo->email = $request->email;
+        $foo->email_verified_at = $request->email_verified_at;
+
+        $foo->save();
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\foo  $foo
+     * @return \Illuminate\Http\Response
+     */
+    public function show(foo $foo)
+    {
+        $foo = Foo::where('foos.id', '>', 1)
+            ->leftjoin('fk_tests', 'fk_tests.id', '=', 'foos.fk_tests_id')
+            ->select('foos.*', 'fk_tests.name as fk_name', 'fk_tests.id as fk_id')
+            ->get();
+        return $foo;
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\Models\foo  $foo
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(foo $foo)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\foo  $foo
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, foo $foo)
+    {
+        //
+        $foo = foo::where('name', 'test2')->get()[0];
+        // $foo = foo::find(1);
+        $foo->email = $request->email;
+        $foo->save();
+
+        // foo::where('name', 'oransheep')
+        //     ->update(['email' => $request->email]);
+
+        return $foo;
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\foo  $foo
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(foo $foo)
+    {
+        //
+    }
+}

+ 33 - 0
app/Http/Requests/StorefkTestRequest.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class StorefkTestRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array<string, mixed>
+     */
+    public function rules()
+    {
+        return [
+            //
+            'name' => 'required',
+            'gender' => 'required',
+            
+        ];
+    }
+}

+ 30 - 0
app/Http/Requests/UpdatefkTestRequest.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class UpdatefkTestRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return false;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array<string, mixed>
+     */
+    public function rules()
+    {
+        return [
+            //
+        ];
+    }
+}

+ 16 - 0
app/Models/fkTest.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class fkTest extends Model
+{
+    use HasFactory;
+    public $timestamps = false;
+    protected $fillable = [
+        'name',
+        'gender',
+    ];
+}

+ 31 - 0
app/Models/foo.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class foo extends Model
+{
+    use HasFactory;
+    /**
+     * The attributes that are mass assignable.
+     *
+     * @var array<int, string>
+     */
+    public $timestamps = false;
+    protected $fillable = [
+        'name',
+        'email',
+        'fk_tests_id',
+    ];
+
+    /**
+     * The attributes that should be cast.
+     *
+     * @var array<string, string>
+     */
+    protected $casts = [
+        'email_verified_at' => 'datetime',
+    ];
+}

+ 24 - 0
database/factories/FkTestFactory.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace Database\Factories;
+
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+/**
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\fkTest>
+ */
+class FkTestFactory extends Factory
+{
+    /**
+     * Define the model's default state.
+     *
+     * @return array<string, mixed>
+     */
+    public function definition()
+    {
+        return [
+            'name' => $this->faker->city(),
+            'gender' => $this->faker->title(),
+        ];
+    }
+}

+ 50 - 0
database/factories/FooFactory.php

@@ -0,0 +1,50 @@
+<?php
+
+namespace Database\Factories;
+
+use App\Models\fkTest;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+/**
+ * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\foo>
+ */
+class FooFactory extends Factory
+{
+    /**
+     * Define the model's default state.
+     *
+     * @return array<string, mixed>
+     */
+    public function definition()
+    {
+        return [
+            'name' => $this->faker->name(),
+            'email' => $this->faker->unique()->safeEmail(),
+            'email_verified_at' => now(),
+            'fk_tests_id' => $this->faker->randomElement(fkTest::pluck('id')),
+        ];
+    }
+
+    /**
+     * Indicate that the model's email address should be unverified.
+     *
+     * @return static
+     */
+    public function unverified()
+    {
+        return $this->state(function (array $attributes) {
+            return [
+                'email_verified_at' => null,
+            ];
+        });
+    }
+
+    public function allOransheep()
+    {
+        return $this->state(function (array $attributes) {
+            return [
+                'name' => 'oransheep',
+            ];
+        });
+    }
+}

+ 3 - 3
database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-return new class extends Migration
+class CreatePersonalAccessTokensTable extends Migration
 {
     /**
      * Run the migrations.
@@ -14,7 +14,7 @@ return new class extends Migration
     public function up()
     {
         Schema::create('personal_access_tokens', function (Blueprint $table) {
-            $table->id();
+            $table->bigIncrements('id');
             $table->morphs('tokenable');
             $table->string('name');
             $table->string('token', 64)->unique();
@@ -33,4 +33,4 @@ return new class extends Migration
     {
         Schema::dropIfExists('personal_access_tokens');
     }
-};
+}

+ 33 - 0
database/migrations/2022_11_28_051624_create_fk_tests_table.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('fk_tests', function (Blueprint $table) {
+            $table->id();
+            $table->string('name');
+            $table->string('gender')->nullable();
+            
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('fk_tests');
+    }
+};

+ 36 - 0
database/migrations/2022_11_29_073900_create_foos_table.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('foos', function (Blueprint $table) {
+            $table->id();
+            $table->string('name');
+            $table->string('email');
+            $table->unsignedBigInteger('fk_tests_id');
+            //$table->foreign('fk_tests_id')->references('id')->on('fk_tests')->onDelete('cascade')->onUpdate('cascade');
+            $table->timestamp('email_verified_at')->nullable();
+            
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('foos');
+    }
+};

+ 1 - 2
database/seeders/DatabaseSeeder.php

@@ -17,8 +17,7 @@ class DatabaseSeeder extends Seeder
     public function run()
     {
         
-        //\App\Models\User::factory(10)->create();
-        $users = \App\Models\User::factory(3)->unverified()->create();
+        $users = \App\Models\User::factory(10)->create();
         echo "test";
     }
 }

+ 19 - 0
database/seeders/FkTestSeeder.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class FkTestSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}

+ 22 - 0
database/seeders/FooSeeder.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace Database\Seeders;
+
+use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use Illuminate\Database\Seeder;
+
+class FooSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+        
+        $fkTest = \App\Models\FkTest::factory(5)->create();
+        $users = \App\Models\foo::factory(5)->create();
+    }
+}

+ 51 - 2
routes/api.php

@@ -5,7 +5,10 @@ use Illuminate\Support\Facades\Route;
 use Illuminate\Support\Facades\DB;
 use App\Http\Controllers\ApplicationController;
 use App\Http\Controllers\API\UserController;
-
+use App\Http\Controllers\FooController;
+use App\Http\Controllers\FkTestController;
+use App\Models\User;
+use Illuminate\Support\Facades\Hash;
 /*
 |--------------------------------------------------------------------------
 | API Routes
@@ -17,4 +20,50 @@ use App\Http\Controllers\API\UserController;
 |
 */
 
-Route::get('/user/{id}', [UserController::class, 'show']);
+Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
+    return $request->user();
+});
+Route::get('/foo', [FooController::class, 'index']);
+Route::get('/foo/create', [FooController::class, 'create']);
+Route::post('/foo/store', [FooController::class, 'store']);
+Route::post('/foo/update', [FooController::class, 'update']);
+Route::get('/foo/show', [FooController::class, 'show']);
+
+Route::post('/fk/store', [FkTestController::class, 'store']);
+
+Route::get('/user/{id}', [UserController::class, 'show']);
+
+Route::post('/login', function (Request $request) {
+    $data = $request->validate([
+        'email' => 'required|email',
+        'password' => 'required'
+    ]);
+
+    $user = User::where('email', $request->email)->first();
+
+    if (!$user || !Hash::check($request->password, $user->password)) {
+        return response([
+            'message' => ['These credentials do not match our records.']
+        ], 404);
+    }
+
+    $token = $user->createToken('my-app-token')->plainTextToken;
+
+    $response = [
+        'user' => $user,
+        'token' => $token
+    ];
+    
+    foreach ($user->tokens as $token) {
+    //
+    }
+    
+    
+    return response($response, 201);
+});
+
+Route::post('/tokens/create', function (Request $request) {
+    $token = $request->user()->createToken($request->token_name);
+
+    return ['token' => $token->plainTextToken];
+});

+ 1 - 1
routes/web.php

@@ -13,5 +13,5 @@ use App\Http\Controllers\ApplicationController;
 | contains the "web" middleware group. Now create something great!
 |
 */
-
+Route::get('/login', [ApplicationController::class, 'index'])->name('login');
 Route::get('/{any}', [ApplicationController::class, 'index'])->where('any', '.*');