Почему ваш пример URL имеет префикс /back
? Потому что ваш файл маршрута не показывает это поведение. Возможно, ошибка заключается в том, чтобы найти в этой конструкции, но есть и другая причина.
Для меня ваша проблема выглядит так, как будто вы неправильно настраиваете свои ключи. Метод pluck()
в коллекции возвращает все значения данного ключа, как описано здесь:
https://laravel.com/docs/5.8/collections#method -pluck
Поскольку вы передаете ключ id
как в методе pluck
все значения клавиши name
будут введены со значением соответствующей id
записи.
Таким образом, ваше представление должно выглядеть примерно так (не проверено):
...
<select class="form-control" name="categories" id="categories">
<option value="0" disable="true" selected="true">=== Select Category ===</option>
@foreach ($categories as $key => $value)
// changed the value of the value-attribute to the key of the passed collection
<option value="{{$key}}">{{ $value }}</option>
@endforeach
</select>
...
НО :
, поскольку я предполагаю, что ваша subcategory
-антия используется не только для вашей category
, но скорее в основном независимая сущность, возможно, Вы можете подумать об этих следующих моментах:
Вы также можете использовать функцию ресурса Laravels.
https://laravel.com/docs/5.8/controllers#resource -контроллеры
маршрут для получения subcategory
, даже для указанного c родительского ключа, не должен находиться в пределах маршрута создания вашей категории. Это независимая таблица и тип данных, поэтому вы можете задать ему маршрут, например:
Route::get('/category/subcategories/{category}', 'CategoryContoller@getSubcategories');
Как вы можете видеть в предыдущем примере, я добавил параметр маршрута (https://laravel.com/docs/5.8/routing#route -параметры ), что дает вам возможность вызывать модель непосредственно из маршрута. Можно также сказать, что этот запрос связан с сущностью subcategory
, поэтому он будет обработан в пределах SubcategoryController
. Но хотя это всегда вопрос личных предпочтений, для меня более правдоподобно использовать его таким образом, потому что позже мы получим подкатегории из самой категории. И поэтому мы будем вызывать и обрабатывать category
-модель в своем собственном контроллере, который мне удобнее.
Чтобы использовать этот подход, вы должны изменить / добавить 2 вещи:
public function boot()
{
parent::boot(); // kept this line if its there, add it if not
Route::model('category', App\Category::class); // add this new line
}
- Добавьте связи с вашими моделями:
# Category
public function subcategories() {
$this->hasMany(App\Subcategory::class);
}
# Subcatgory
public function category() {
$this->belongsTo(App\Category::class);
}
После этого вы можете сделать в вас следующее CategoryController
:
#CategoryController
// the $category model variable is automatically injected and is a retrieved dataset from your database
public function getSubcategories(Category $category) {
$subcategories = $category->subcategories();
return response()->json($subcategories->toArray());
}
Hope this can help a bit.