Как получить данные из двух таблиц, используя FOREACH, используя CakePHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как получить данные из двух таблиц, используя FOREACH, используя CakePHP

Сообщение 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>

Это намного проще, чем мой исходный код и работает отлично.

Подробнее здесь: https://stackoverflow.com/questions/557 ... ng-cakephp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»