仅显示与 select 选项中的类别相关的子类别 laravel

Only show the subcategories related to the category in select option laravel

我只想显示与之前在 laravel 中使用动态 select 下拉菜单选择的类别相关的子类别。

这是我的代码

<div class="form-group">
        <label>Category</label>
        <select id="categoryList" class="form-control" name="category_id" required>
            @foreach ($categories as $category)
                <option value="{{ $category->id }}">{{ $category->name }}</option>
            @endforeach
        </select>

        <label>Subcategory</label>
        <select id="subcategoryList" class="form-control" name="subcategory_id" required>
            @foreach ($subcategories as $subcategory)
                <option value="{{ $subcategory->id }}">{{ $subcategory->name }}</option>
            @endforeach
        </select>
    </div>

非常感谢 TIA 的任何帮助!

已编辑*

这是类别和子类别的模型

类别

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model

{
    public $timestamps = false;

public function subcategories()
{
    return $this->hasMany('App\Subcategory');
}
}

子类别

 <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Subcategory extends Model
{
    public $timestamps = false;

    public function category()
    {
        return $this->belongsTo('App\Category', 'category_id');
    }
}

如果列表不是太大或不需要 ajax,通常我会将 category_id 添加为 class 子类别选项,然后将其隐藏直到选择父类别。

假设您与类别的关系列是 category_id 代码如下所示:

<label>Subcategory</label>
<select id="subcategoryList" class="form-control" name="subcategory_id" required disabled>
    @foreach ($subcategories as $subcategory)
        <option value="{{ $subcategory->id }}" class='parent-{{ $subcategory->category_id }} subcategory'>{{ $subcategory->name }}</option>
    @endforeach
</select>

这里 jquery 这样做:

$('#categoryList').on('change', function () {
    $("#subcategoryList").attr('disabled', false); //enable subcategory select
    $("#subcategoryList").val("");
    $(".subcategory").attr('disabled', true); //disable all category option
    $(".subcategory").hide(); //hide all subcategory option
    $(".parent-" + $(this).val()).attr('disabled', false); //enable subcategory of selected category/parent
    $(".parent-" + $(this).val()).show(); 
});