mirror of https://github.com/kcal-app/kcal.git
Fix Ingredient/HasIngredient trait relationships
This commit is contained in:
parent
b8ae2f5473
commit
ae27a2e4bd
|
@ -125,7 +125,7 @@ class FoodController extends Controller
|
|||
*/
|
||||
public function destroy(Food $food): RedirectResponse
|
||||
{
|
||||
if ($food->ingredientAmountChildren()->count()) {
|
||||
if (!empty($food->ingredientAmountRelationships)) {
|
||||
return back()->withErrors('Cannot delete: this food is used in recipes.');
|
||||
}
|
||||
$food->delete();
|
||||
|
|
|
@ -56,8 +56,8 @@ use Spatie\Tags\HasTags;
|
|||
* @property-read string $serving_size_formatted
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IngredientAmount[] $ingredientAmounts
|
||||
* @property-read int|null $ingredient_amounts_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IngredientAmount[] $ingredientAmountChildren
|
||||
* @property-read int|null $ingredient_amount_children_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IngredientAmount[] $ingredientAmountRelationships
|
||||
* @property-read int|null $ingredient_amount_relationships_count
|
||||
* @property-read string $type
|
||||
* @property \Illuminate\Database\Eloquent\Collection|\Spatie\Tags\Tag[] $tags
|
||||
* @property-read int|null $tags_count
|
||||
|
|
|
@ -42,6 +42,7 @@ use Illuminate\Support\Pluralizer;
|
|||
* @method static \Illuminate\Database\Eloquent\Builder|IngredientAmount whereWeight($value)
|
||||
* @mixin \Eloquent
|
||||
* @property-read string|null $unit_formatted
|
||||
* @property-read string $nutrients_summary
|
||||
*/
|
||||
final class IngredientAmount extends Model
|
||||
{
|
||||
|
@ -65,11 +66,6 @@ final class IngredientAmount extends Model
|
|||
'weight' => 'int',
|
||||
];
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected $with = ['ingredient'];
|
||||
|
||||
/**
|
||||
* Nutrient calculation methods.
|
||||
*/
|
||||
|
|
|
@ -44,8 +44,8 @@ use Spatie\Tags\HasTags;
|
|||
* @property-read int|null $ingredient_amounts_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IngredientAmount[] $ingredients
|
||||
* @property-read int|null $ingredients_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IngredientAmount[] $ingredientAmountChildren
|
||||
* @property-read int|null $ingredient_amount_children_count
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IngredientAmount[] $ingredientAmountRelationships
|
||||
* @property-read int|null $ingredient_amount_relationships_count
|
||||
* @property-read string $type
|
||||
* @property \Illuminate\Database\Eloquent\Collection|\Spatie\Tags\Tag[] $tags
|
||||
* @property-read int|null $tags_count
|
||||
|
|
|
@ -23,7 +23,9 @@ trait HasIngredients
|
|||
* Get all of the ingredients.
|
||||
*/
|
||||
public function ingredientAmounts(): MorphMany {
|
||||
return $this->morphMany(IngredientAmount::class, 'parent')->orderBy('weight');
|
||||
return $this->morphMany(IngredientAmount::class, 'parent')
|
||||
->with('ingredient')
|
||||
->orderBy('weight');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
namespace App\Models\Traits;
|
||||
|
||||
use App\Models\IngredientAmount;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
trait Ingredient
|
||||
|
@ -27,8 +27,8 @@ trait Ingredient
|
|||
/**
|
||||
* Get all of the ingredient amounts associated with the ingredient.
|
||||
*/
|
||||
public function ingredientAmountChildren(): MorphToMany {
|
||||
return $this->morphToMany(IngredientAmount::class, 'ingredient');
|
||||
public function ingredientAmountRelationships(): MorphMany {
|
||||
return $this->morphMany(IngredientAmount::class, 'ingredient')->with('parent');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,11 +14,17 @@
|
|||
@csrf
|
||||
<div class="text-lg pb-3">
|
||||
Are you sure what to delete <span class="font-extrabold">{{ $food->name }}</span>?
|
||||
<div class="grid grid-cols-2 w-max">
|
||||
<div class="font-bold pr-2">Detail:</div>
|
||||
<div>{{ $food->detail ?? 'None' }}</div>
|
||||
<div class="font-bold pr-2">Brand:</div>
|
||||
<div>{{ $food->brand ?? 'None' }}</div>
|
||||
<div class="flex flex-col space-y-2 mt-2 mb-2 text-lg">
|
||||
<div>
|
||||
<span class="font-bold">Detail:</span>
|
||||
<span>{{ $food->detail }}</span>
|
||||
</div>
|
||||
@if($food->brand)
|
||||
<div>
|
||||
<span class="font-bold">Brand:</span>
|
||||
<span>{{ $food->brand }}</span>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<x-inputs.button class="bg-red-800 hover:bg-red-700">
|
||||
|
|
Loading…
Reference in New Issue