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