Так что мне нужно получить данные из нескольких таблиц, и у меня возникли проблемы с этим. < /p>
У меня есть два класса модели: < /p>
[*] The Disess_supervisor: имеет идентификатор супервизора и Тезис идентификатор < /li>
Тезис: имеет каждую информацию о тезисе (идентификатор, субъект, автор ...) < /li>
< /ul>
Я хочу сделать, учитывая идентификатор руководителя, я хочу знать, какой тезис он контролирует, и все инфо в диссертации. < /p>
Вот мой код: < /p>
В моем контроллере руководителя диссертации у меня есть эта функция: < /p>
public function listOfThesisBySupervisor($id=null){
$result = $this->ThesisSupervisor->find('all', [
'conditions' => ['supervisor_id' => $id],
]);
$resultset=array();
foreach($result as $row){
$this->loadModel('Theses');
$query = $this->Theses->find('all');
array_push($resultset,$query->where(['id' => $row->these_id])->toArray());
}
$this->set('Thesis', $resultset);
}
}
< /code>
Эта функция: < /p>
Получение всего тезиса, связанного с данным руководителем
[*] Использует Foreach для прохождения различного тезиса
[*] сохраняет тезис Infos в переменной resultset
Возвращает его в представление < /li>
< /ul>
Вот код в представлении: < /p>
< /code>
Итак, с помощью этого кода я нахожу правильное количество результатов, но они не распознаются в представлении, я получаю этот тип ошибки для каждого поля тезиса : < /p>
Trying to get property 'id' of non-object
< /code>
Я попробовал много разных синтаксисов для этого (я попытался удалить -> toarray в Foreach, чтобы иметь объект, но у меня есть неопределенная ошибка свойства для каждого поля из Тезис), но ни один из них не работал. Я думаю, что проблема заключается в том, чтобы добавить результаты каждого цикла Foreach к переменной ResultSet, но я не вижу, как это исправить ... < /p>
Редактировать: как предложено NDM В его комментарии я больше посмотрел в ассоциации (поскольку мои модельные классы связаны вместе с ассоциациями), и здесь мой окончательный код: < /p>
$result = $this->ThesisSupervisor->find('all', [
'conditions' => ['supervisor_id' => $id],
'contain' => ['Thesis']
]);
$resultset=array();
foreach ($result as $row){
$resultset[]=$row["thesis"];
}
$this->set('Theses', $resultset);
< /code>
Это намного проще, чем мой исходный код и работает отлично.
Подробнее здесь: https://stackoverflow.com/questions/557 ... ng-cakephp
Как получить данные из двух таблиц, используя FOREACH, используя CakePHP ⇐ Php
Кемеровские программисты php общаются здесь
1739390480
Anonymous
Так что мне нужно получить данные из нескольких таблиц, и у меня возникли проблемы с этим. < /p>
У меня есть два класса модели: < /p>
[*] The Disess_supervisor: имеет идентификатор супервизора и Тезис идентификатор < /li>
Тезис: имеет каждую информацию о тезисе (идентификатор, субъект, автор ...) < /li>
< /ul>
Я хочу сделать, учитывая идентификатор руководителя, я хочу знать, какой тезис он контролирует, и все инфо в диссертации. < /p>
Вот мой код: < /p>
В моем контроллере руководителя диссертации у меня есть эта функция: < /p>
public function listOfThesisBySupervisor($id=null){
$result = $this->ThesisSupervisor->find('all', [
'conditions' => ['supervisor_id' => $id],
]);
$resultset=array();
foreach($result as $row){
$this->loadModel('Theses');
$query = $this->Theses->find('all');
array_push($resultset,$query->where(['id' => $row->these_id])->toArray());
}
$this->set('Thesis', $resultset);
}
}
< /code>
Эта функция: < /p>
Получение всего тезиса, связанного с данным руководителем
[*] Использует Foreach для прохождения различного тезиса
[*] сохраняет тезис Infos в переменной resultset
Возвращает его в представление < /li>
< /ul>
Вот код в представлении: < /p>
< /code>
Итак, с помощью этого кода я нахожу правильное количество результатов, но они не распознаются в представлении, я получаю этот тип ошибки для каждого поля тезиса : < /p>
Trying to get property 'id' of non-object
< /code>
Я попробовал много разных синтаксисов для этого (я попытался удалить -> toarray в Foreach, чтобы иметь объект, но у меня есть неопределенная ошибка свойства для каждого поля из Тезис), но ни один из них не работал. Я думаю, что проблема заключается в том, чтобы добавить результаты каждого цикла Foreach к переменной ResultSet, но я не вижу, как это исправить ... < /p>
Редактировать: как предложено NDM В его комментарии я больше посмотрел в ассоциации (поскольку мои модельные классы связаны вместе с ассоциациями), и здесь мой окончательный код: < /p>
$result = $this->ThesisSupervisor->find('all', [
'conditions' => ['supervisor_id' => $id],
'contain' => ['Thesis']
]);
$resultset=array();
foreach ($result as $row){
$resultset[]=$row["thesis"];
}
$this->set('Theses', $resultset);
< /code>
Это намного проще, чем мой исходный код и работает отлично.
Подробнее здесь: [url]https://stackoverflow.com/questions/55796753/how-to-retrieve-data-from-two-tables-using-a-foreach-using-cakephp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия