Не обязательно оптимальный подход, но вы можете легко решить эту проблему, не используя предложение join, и иметь отдельные переменные с родительскими категориями и их дочерними элементами.
Вы не показываете свой контроллер, поэтомуне совсем просто сделать предложение, но попробуйте что-то вроде этого:
В вашем контроллере: Имейте две отдельные переменные, заполненные двумя отдельными вызовами модели.Один с содержимым вашей таблицы categories
, а другой с содержимым вашей таблицы options
.Крайне важно, чтобы оба содержали поле category_id
На ваш взгляд: Вам нужны два вложенных цикла foreach
.Самый внешний цикл по категориям.Самая внутренняя петля опций.
<?php
foreach ($categories as $c)
{ ?
<select name="<?php echo $c->category_id; ?>">
<?php
foreach ($options as $o)
{
if ($o->category_id == $c->category_id)
{ ?>
<option value="<?php echo $o->option_id; ?>"><?php echo $o->option_name; ?>
</option>
<?php
} ?>
</select>
<?php
}
?>
измените вышеприведенное, чтобы использовать ваши собственные имена переменных.Таким образом, у вас будет один элемент SELECT
для каждой категории, заполненный таким количеством элементов OPTION
, сколько есть вариантов с той же категорией