mirror of https://github.com/kcal-app/kcal.git
Add RecipeStep model
This commit is contained in:
parent
361d3b3a07
commit
2d1990d415
|
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\RecipeStep;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class RecipeStepController 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 \Illuminate\Http\Request $request
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display the specified resource.
|
||||||
|
*
|
||||||
|
* @param \App\Models\RecipeStep $recipeStep
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function show(RecipeStep $recipeStep)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*
|
||||||
|
* @param \App\Models\RecipeStep $recipeStep
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function edit(RecipeStep $recipeStep)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @param \App\Models\RecipeStep $recipeStep
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function update(Request $request, RecipeStep $recipeStep)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*
|
||||||
|
* @param \App\Models\RecipeStep $recipeStep
|
||||||
|
* @return \Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function destroy(RecipeStep $recipeStep)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @property int id
|
||||||
* @property string name
|
* @property string name
|
||||||
* @property string unit
|
* @property string unit
|
||||||
* @property float calories
|
* @property float calories
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @property int id
|
||||||
* @property float amount
|
* @property float amount
|
||||||
* @property float unit
|
* @property float unit
|
||||||
* @property int weight
|
* @property int weight
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@ use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @property int id
|
||||||
|
* @property string name
|
||||||
|
* @property string description
|
||||||
|
* @property int servings
|
||||||
* @property \App\Models\IngredientAmount[] ingredientAmounts
|
* @property \App\Models\IngredientAmount[] ingredientAmounts
|
||||||
*/
|
*/
|
||||||
class Recipe extends Model
|
class Recipe extends Model
|
||||||
|
|
@ -18,18 +22,27 @@ class Recipe extends Model
|
||||||
*/
|
*/
|
||||||
protected array $fillable = [
|
protected array $fillable = [
|
||||||
'name',
|
'name',
|
||||||
|
'description',
|
||||||
|
'servings',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritdoc
|
* @inheritdoc
|
||||||
*/
|
*/
|
||||||
protected array $with = ['ingredientAmounts'];
|
protected array $with = ['steps', 'ingredientAmounts'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the steps for this Recipe.
|
||||||
|
*/
|
||||||
|
public function steps(): HasMany {
|
||||||
|
return $this->hasMany(RecipeStep::class)->orderBy('number');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the Ingredient Amounts used for this Recipe.
|
* Get the Ingredient Amounts used for this Recipe.
|
||||||
*/
|
*/
|
||||||
public function ingredientAmounts(): HasMany {
|
public function ingredientAmounts(): HasMany {
|
||||||
return $this->hasMany(IngredientAmount::class);
|
return $this->hasMany(IngredientAmount::class)->orderBy('weight');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int id
|
||||||
|
* @property int number
|
||||||
|
* @property string step
|
||||||
|
* @property \App\Models\Recipe recipe
|
||||||
|
*/
|
||||||
|
class RecipeStep extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
protected array $fillable = [
|
||||||
|
'number',
|
||||||
|
'step',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Recipe this step belongs to.
|
||||||
|
*/
|
||||||
|
public function recipe(): BelongsTo {
|
||||||
|
return $this->belongsTo(Recipe::class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Factories;
|
||||||
|
|
||||||
|
use App\Models\RecipeStep;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||||
|
|
||||||
|
class RecipeStepFactory extends Factory
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name of the factory's corresponding model.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $model = RecipeStep::class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the model's default state.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function definition()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
//
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,6 +16,8 @@ class CreateRecipesTable extends Migration
|
||||||
Schema::create('recipes', function (Blueprint $table) {
|
Schema::create('recipes', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
|
$table->longText('description');
|
||||||
|
$table->unsignedInteger('servings');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Recipe;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateRecipeStepsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('recipe_steps', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignIdFor(Recipe::class);
|
||||||
|
$table->unsignedInteger('number');
|
||||||
|
$table->longText('step');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('recipe_steps');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@ namespace Database\Seeders;
|
||||||
use App\Models\Ingredient;
|
use App\Models\Ingredient;
|
||||||
use App\Models\IngredientAmount;
|
use App\Models\IngredientAmount;
|
||||||
use App\Models\Recipe;
|
use App\Models\Recipe;
|
||||||
|
use App\Models\RecipeStep;
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
class RecipeSeeder extends Seeder
|
class RecipeSeeder extends Seeder
|
||||||
|
|
@ -15,7 +16,11 @@ class RecipeSeeder extends Seeder
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
/** @var \App\Models\Recipe $recipe */
|
/** @var \App\Models\Recipe $recipe */
|
||||||
$recipe = Recipe::factory()->create(['name' => 'pancakes']);
|
$recipe = Recipe::factory()->create([
|
||||||
|
'name' => 'pancakes',
|
||||||
|
'description' => 'Basic pancakes in two steps.',
|
||||||
|
'servings' => 4,
|
||||||
|
]);
|
||||||
|
|
||||||
$weight = 0;
|
$weight = 0;
|
||||||
$amounts = [
|
$amounts = [
|
||||||
|
|
@ -76,5 +81,19 @@ class RecipeSeeder extends Seeder
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
IngredientAmount::factory()->createMany($amounts);
|
IngredientAmount::factory()->createMany($amounts);
|
||||||
|
|
||||||
|
$steps = [
|
||||||
|
[
|
||||||
|
'recipe_id' => $recipe->id,
|
||||||
|
'number' => 1,
|
||||||
|
'step' => 'In a large bowl, mix flour, sugar, baking powder and salt. Make a well in the center, and pour in milk, egg and oil. Mix until smooth.',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'recipe_id' => $recipe->id,
|
||||||
|
'number' => 2,
|
||||||
|
'step' => 'Heat a lightly oiled griddle or frying pan over medium high heat. Pour or scoop the batter onto the griddle, using approximately 1/4 cup for each pancake. Brown on both sides and serve hot.',
|
||||||
|
]
|
||||||
|
];
|
||||||
|
RecipeStep::factory()->createMany($steps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue