Intereting Posts
Конфигурация сервера: allow_url_fopen = 0 в Регулярное выражение, замените множественные слэши только одним Выполнение команд hadoop в браузере Чувствительность к регистру Yii Скремблирование данных со всех страниц asp.net с использованием разбивки на страницы AJAX Получить данные Youtube VideoID в массиве подготовленное заявление с Eloquent ORM / laravel Установите опцию, доступную для выбора, на основе другого выбора php 1048 Значение столбца не может быть нулевым Отправить данные формы с помощью jquery ajax json Как изменить домашнюю страницу по умолчанию в opencart Может ли метод testAction CakePHP выжить при переадресации? Использование javascript history.back () не работает в Safari .. как мне сделать его кросс-браузер? Элементы упорядочиваются одинаково после разделения массива на array_keys () и array_values ​​()? При назначении массива PHP массиву JS каждый алфавит значений массива делится

SQL объединяет результаты в объект в codeigniter

хорошо, немного фона,

  • просто в codeigniter
  • не поклонник sql и серверных скриптов
  • я знаю, что объединяет
  • У меня есть база данных «многие-ко-многим» в первый раз

это потому, что в результате соединения обычно имеют следующий пример. но я хотел разобрать это, не создавая код для игнорирования повторений. это пример соединения с тремя таблицами. вопрос о повторяющихся значениях возрастает по мере того, как я присоединяюсь к другим таблицам:

table1.authorid table1.authorname table2.books table3.favorited 1 john john's book 1 jean 1 john john's book 1 joe 1 john john's book 2 ken 1 john john's book 2 mark 2 mark mark's book 1 alice 2 mark mark's book 1 ted 2 mark mark's book 2 sarah 2 mark mark's book 2 denise 

есть ли способ в codeigniter (или простой PHP), что я могу получить эту форму массива и превратить ее в нечто вроде json (и разобрать его как json)

 $result = [ { 'authorid':1, 'authorname':'john', 'books':['john's book1','john's book2'], 'favorited':['jean','joe','ken','mark'] }, { 'authorid':2, 'authorname':'mark', 'books':['mark's book1','mark's book2'], 'favorited':['alice','ted','sarah','denise'] } ] 

Обновление : это не ограничивается этой глубиной объектов / массивов (как в примере). он может идти глубже (массивы в массивах, массивы в объектах, объекты в массивах, объекты в объектах)

Solutions Collecting From Web of "SQL объединяет результаты в объект в codeigniter"

 // first, we need the SQL results in the $result_array variable $sql = 'SELECT ...'; // your SQL command $result_array = $this->db->query($sql)->result_array(); // codeigniter code // here the real answer begins $result = array(); foreach ($result_array as $row) { if (!isset($result[$row['authorid']]) { $author = new StdClass(); $author->authorid = $row['authorid']; $author->authorname = $row['authorname']; $author->books = array($row['books']); $author->favorited = array($row['favorited']); $result[$row['authorid']] = $author; } else { if (!in_array($row['books'], $result[$row['authorid']]->books)) { $result[$row['authorid']]->books[] = $row['books']; } if (!in_array($row['favorited'], $result[$row['authorid']]->favorited)) { $result[$row['authorid']]->favorited[] = $row['favorited']; } } } $result = array_values($result); echo json_encode($result);