У меня есть структура таблицы, как показано ниже, где item_id -> 1,2 являются главными пунктами меню ... и item_id -> 3,4 являются подпунктами к 1, которые могут быть определены parent_idphp yalinqo - итерация результата
и я использую следующий код для извлечения и перебирать этот результат. и правильно структурировать меню в пользовательском интерфейсе.
Пока я не использую цикл foreach 'foreach-1', все работает нормально. и результат
1-СУМКИ() ... 2-АКСЕССУАРЫ() ...
Но когда я добавить цикл Еогеасп 'Еогеасп-2'. Результат не показывает (2-аксессуары), как показано ниже
1-МЕШКОВ (3,4,) ...
И, как вы видите, я использую библиотеку yalinqo для выборка данных из набора результатов. И очень мало помогает на yalinqo на www.
Это что-то скрытое curser, создающее проблему? Или что-то не так в том, как формируется запрос yalinqo?
Если вы работали над yalinqo, пожалуйста, помогите мне здесь. Потому что я больше являюсь пользователем .net и имею очень мало опыта работы с php.
Я отправляю только частичный код здесь:
use \YaLinqo\Enumerable as E;
...
if ($connection)
{
$result = mysqli_query($connection, "CALL fetch_main_menu") or die("Query fail: " . mysqli_error());
$result_data = E::from ($result) ;
$top_menu = E::from ($result_data)
->where (function($item){return $item["parent_id"]==null;})
->select (function ($item){return $item;});
//foreach - 1
foreach ($top_menu as $i)
{
$item_id = $i["id"];
$item_name = $i["name"];
echo $item_id . '-' . $item_name ;
//fetch subitems
$sub_menu = E::from ($result_data)
->where (function($item){global $item_id; return $item["parent_id"] != null && $item["parent_id"] == $item_id;})
->select (function ($item){return $item;});
echo '(';
//foreach - 2
foreach($sub_menu as $sub_i)
{
echo $sub_i["id"] . ',';
}
unset($sub_menu);
echo ') ... ';
}
}
P.S .: я был бы рад использовать еще более эффективную работу вокруг, если есть для структурирования панели меню.
Вы можете использовать базу данных NoSQL например, mongoDB и сохранить дерево в базе данных. Или используйте postgrySql для вставки массива для родительских полей. Или используйте графическую базу данных. Или mysql great 5.7 и используйте формат json. и многое другое и т. д., но вы можете выбрать один запрос для всех данных и один интерзатор foreach. – Naumov