diff --git a/app/Models/Order.php b/app/Models/Order.php new file mode 100644 index 0000000..43da102 --- /dev/null +++ b/app/Models/Order.php @@ -0,0 +1,25 @@ +belongsTo(Service::class); + } + + public function user() { + return $this->belongsTo(User::class); + } +} diff --git a/app/Models/Service.php b/app/Models/Service.php new file mode 100644 index 0000000..1e3a93b --- /dev/null +++ b/app/Models/Service.php @@ -0,0 +1,21 @@ +hasMany(Order::class); + } + +} diff --git a/app/Models/User.php b/app/Models/User.php index a481d17..5070fbc 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -6,6 +6,7 @@ use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use App\Models\Order; class User extends Authenticatable implements MustVerifyEmail { @@ -40,4 +41,8 @@ class User extends Authenticatable implements MustVerifyEmail protected $casts = [ 'email_verified_at' => 'datetime', ]; + + public function orders() { + return $this->hasMany(Order::class); + } } diff --git a/database/factories/OrderFactory.php b/database/factories/OrderFactory.php new file mode 100644 index 0000000..f49542b --- /dev/null +++ b/database/factories/OrderFactory.php @@ -0,0 +1,38 @@ + $this->faker->randomNumber(4, false), + 'service_id' => function() { + return Service::inRandomOrder()->first()->id; + }, + 'user_id' => function() { + return User::inRandomOrder()->first()->id; + }, + ]; + } + +} diff --git a/database/migrations/2021_05_18_184617_create_services_table.php b/database/migrations/2021_05_18_184617_create_services_table.php new file mode 100644 index 0000000..81d8a14 --- /dev/null +++ b/database/migrations/2021_05_18_184617_create_services_table.php @@ -0,0 +1,37 @@ +id(); + $table->timestamps(); + $table->string('name'); + $table->string('type')->nullable(); + $table->string('site'); + $table->boolean('available'); + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('services'); + } +} diff --git a/database/migrations/2021_05_13_185302_create_orders_table.php b/database/migrations/2021_05_19_185302_create_orders_table.php similarity index 84% rename from database/migrations/2021_05_13_185302_create_orders_table.php rename to database/migrations/2021_05_19_185302_create_orders_table.php index 2f5f0b4..c79f88c 100644 --- a/database/migrations/2021_05_13_185302_create_orders_table.php +++ b/database/migrations/2021_05_19_185302_create_orders_table.php @@ -16,7 +16,8 @@ class CreateOrdersTable extends Migration Schema::create('orders', function (Blueprint $table) { $table->id(); $table->timestamps(); - $table->string('product'); + $table->foreignId('service_id')->constrained(); + $table->foreignId('user_id')->constrained(); $table->bigInteger('quantity'); }); } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 0df5efb..a987efb 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -4,6 +4,8 @@ namespace Database\Seeders; use Illuminate\Database\Seeder; use App\Models\User; +use App\Models\Order; +use App\Models\Service; use Illuminate\Support\Facades\Hash; class DatabaseSeeder extends Seeder @@ -15,7 +17,31 @@ class DatabaseSeeder extends Seeder */ public function run() { - User::create([ + Service::create([ + 'name' => 'youtube_views', + 'type' => 'views', + 'site' => 'youtube', + 'available' => true, + ]); + Service::create([ + 'name' => 'instagram_views', + 'type' => 'views', + 'site' => 'instagram', + 'available' => true, + ]); + Service::create([ + 'name' => 'spotify_plays', + 'type' => 'plays', + 'site' => 'spotify', + 'available' => true, + ]); + Service::create([ + 'name' => 'twitter_likes', + 'type' => 'likes', + 'site' => 'spotify', + 'available' => false, + ]); + $test_user = User::create([ 'name' => 'test_user_unverified', 'email' => 'unverified@example.com', 'role' => 'client', @@ -39,5 +65,8 @@ class DatabaseSeeder extends Seeder 'active' => true, 'password' => Hash::make("test123") ]); + + Order::factory()->count(15)->for($test_user)->create(); + Order::factory()->count(25)->create(); } }