'Laravel Inertia prop not passing values

When calling an edit function the prop mealService is passing null values and will not populate form fields with values. It looks like the controller isn't loading the model to query the single record. The Create and Store functions work fine.

First time posting. And very new to coding. Please let me know if more info is needed for the question.

edit.vue

export default {
  components: {
    Head,
    Link,
    LoadingButton,
    SelectInput,
    TrashedMessage,
  },
  layout: Layout,
  props: {
    mealService: Object,
    sites: Array,
  },
  remember: 'form',
  data() {
    return {
      form: this.$inertia.form({
        site_id: this.mealService.site_id,
        meal_type: this.mealService.meal_type,
        adults: this.mealService.adults,
        tally: this.mealService.tally,       
      }),
    }
  },

MealServiceController

public function edit(MealService $meal_service)
    {
        return Inertia::render('MealServices/Edit', [
            'mealService' => [
                'id' => $meal_service->id,
                'site_id' => $meal_service->site_id,
                'meal_type' => $meal_service->meal_type,
                'adults' => $meal_service->adults,
                'tally' => $meal_service->tally,
            ],
            'sites' => Auth::user()->sfa
                ->sites()
                ->orderBy('name')
                ->get()
                ->map
                ->only('id', 'name'),
        ]);
    }

MealService Model

class MealService extends Model
{
    use HasFactory;
    use SoftDeletes;

    public function resolveRouteBinding($value, $field = null)
        {
            return $this->where($field ?? 'id', $value)->withTrashed()->firstOrFail();
        }

    public function site()
    {
        return $this->belongsTo(Site::class);
    }

    public function scopeFilter($query, array $filters)
    {
        $query->when($filters['search'] ?? null, function ($query, $search) {
            $query->WhereHas('site', function ($query) use ($search) {
                $query->where('name', 'like', '%'.$search.'%');
            });
        })->when($filters['trashed'] ?? null, function ($query, $trashed) {
            if ($trashed === 'with') {
                $query->withTrashed();
            } elseif ($trashed === 'only') {
                $query->onlyTrashed();
            }
        });
    }
}

Route

Route::get('mealServices/{mealService}/edit', [MealServicesController::class, 'edit'])
->name('mealServices.edit')
->middleware('auth');


Solution 1:[1]

In your edit function you are using meal_service while in your route you use mealService

Try naming the one in the edit function mealService too

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 John Zwarthoed