после того как я получил результат запроса, у меня возникла проблема с доступом к связанным таблицам, к которым я присоединился в своем классе таблиц
отладка ($ query):
src\Model\Table\ComlibsTable.php (line 30)
[
(int) 0 => object(App\Model\Entity\Comlib) {
'id' => (int) 1,
'question' => 'how to kill someone?',
'answer' => (int) 2,
'asked' => (int) 90,
'tags' => 'kill,proffesional killer',
'created' => null,
'modified' => null,
'answers' => [
(int) 0 => object(App\Model\Entity\Answer) {
'id' => (int) 1,
'question_id' => (int) 1,
'answer' => 'the crackpot will attack the will of the darkness and then i starve',
'rate' => (float) 11.2,
'view' => (int) 22,
'helpful' => '11|22',
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Answers'
}
],
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Comlibs'
}
]
теперь я знаю, что могу получить доступ к сущности Comlib, например: $ query [0] [‘question’];
но мне интересно, есть ли другой способ доступа к объектам, как $ query-> question;
и как я могу получить доступ к сущности ответов,
мой код контроллера:
<?php
namespace App\Controller;
use App\Controller\AppController;
class ComlibsController extends AppController {
public function index() {
}
public function getResult(){
$this->viewBuilder()->layout('comlib');
$live_req = $this->request->data['searchBox'];
$query = $this->Comlibs->LFM($live_req);
$this->set('question',$query[0]['question']); // does work
$this->set('answer',$query['answers'][0]['id']); // does not work
}
}
Функция LFM
public function LFM( $live_req) {
$query = $this->find()->where(['question' => $live_req])->contain(['Answers']);
$query = $query->toArray();
debug($query);
//include 5 answer
return $query;
}
}
TNX за любую помощь
Хорошо, я понял это после попытки разных способов, так как это был массив, все, что мне нужно было сделать, чтобы получить доступ к массиву правильным образом, и это было:
$this->set('answer',$query[0]['answers'][0]['id']);
Теперь я могу получить доступ к значениям, но кажется, что это не правильный способ доступа к свойству массива, есть ли другой способ? КАК я могу удалить [0] из $ query [0]?
Других решений пока нет …