Laravel - Как определить, какая модель (из двух) с помощью одной html опции выбора - PullRequest
0 голосов
/ 26 апреля 2020

Я перечисляю категории и подкатегории пользователю в избранном. Если у категории есть подкатегории, родительская категория отключается для выбора. Есть случаи, когда категория не имеет подкатегорий. Таким образом, категории и подкатегории перечислены в одном списке.

На моей стороне контроллера у меня есть две модели (категория и подкатегория). как я могу определить выбор? (будь то категория или подкатегория)

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Вы можете справиться с этим несколькими различными способами.

Например, присвойте подкатегориям значение с префиксом sub_category_ и проверьте в контроллере, есть ли в выбранных значениях строка sub_category_, как показано ниже.

<option disabled>{{ $element->title }}</option>
@foreach($element->subcategories as $subcategory)
    <option value ="sub_category_{{$subcategory->id}}">- {{ $subcategory->title }}</option>
@endforeach

Или у вас может быть просто category и subcategory в одной таблице с дополнительным флагом с именем parent_id.

Все родительские категории будут иметь это значение равным 0, а подкатегория будет иметь идентификатор родительской категории в столбце parent_id. Затем вы можете просто сохранить значение без дополнительной работы.

0 голосов
/ 26 апреля 2020

Установить отношение в модели App\Category (при условии, что есть модель App\Subcategory) s:

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

Выбрать категории с подкатегориями:

public function getCategories() {
    $elements = Category::with('subcategories')->get();

    return view('select', compact('elements'));
}

Создать выбор в представлении:

...
<div class="form-group">
    <label for="exampleFormControlSelect1">Example select</label>
    <select class="form-control" id="exampleFormControlSelect">
        @foreach($elements as $element)
            @if(count($element->subcategories) > 0)
                <option disabled>{{ $element->title }}</option>
                @foreach($element->subcategories as $subcategory)
                    <option>- {{ $subcategory->title }}</option>
                @endforeach
            @else
                <option>{{ $element->title }}</option>
            @endif
        @endforeach
    </select>
</div>
...
...