Альтернатива для рекурсивного в CakePHP 3.6.x

В CakePHP 2.x была рекурсивная настройка, и, в зависимости от настройки, она будет использовать X уровней на своих запросах …

Я посмотрел на следующие вопросы, но они не ответили на мой вопрос …

CakePHP 3 Выборка связанных данных рекурсивных

Рекурсивный в cakephp3?


Прямо сейчас я пытаюсь рекурсивно получить следующую таблицу

+----+------------+------------+------------+------------------------------------------+
| id | message_id | account_id | to_user_id | message                                  |
+----+------------+------------+------------+------------------------------------------+
|  1 |          0 | 10         |       1617 | asd a sfg sdfhgdfh  gf dgh dfghfdgh      |
|  2 |          1 | 1617       |         10 | afdkjnjdsf ndfs jfsd kjlfdgs kljgfsd jkl |
|  3 |          2 | 10         |       1617 | t5ge6h65h 6e6heh6eh6 he h e              |
|  4 |          3 | 1617       |         10 | kljnnjkl nkl njkln jkln jkl              |
|  5 |          4 | 10         |       1617 | fffffffffffffff                          |
+----+------------+------------+------------+------------------------------------------+

Со следующими определениями таблицы

$this->belongsTo('Messages', [
'foreignKey' => 'message_id',
'joinType' => 'INNER'
]);
$this->hasMany('Replies', [
'className' => 'Messages',
'foreignKey' => 'message_id',
'propertyName' => 'replies'
]);

И следующее заявление найти

$message = $this->Messages->find('all', ['contain' => ['Replies']])->where(['Messages.id' => $id])->first();

Это мои результаты

App\Model\Entity\Message Object
(
[id] => 1
[account_id] => 10
[message] => asd a sfg sdfhgdfh  gf dgh dfghfdgh
[message_id] => 0
[to_user_id] => 1617
[replies] => Array
(
[0] => App\Model\Entity\Message Object
(
[id] => 2
[account_id] => 1617
[message] => afdkjnjdsf ndfs jfsd kjlfdgs kljgfsd jkl
[message_id] => 1
[to_user_id] => 10
[[new]] =>
[[accessible]] => Array
(
[account_id] => 1
[message] => 1
[message_id] => 1
[to_user_id] => 1
[messages] => 1
)

[[dirty]] => Array
(
)

[[original]] => Array
(
)

[[virtual]] => Array
(
)

[[errors]] => Array
(
)

[[invalid]] => Array
(
)

[[repository]] => Replies
)

)
[[new]] =>
[[accessible]] => Array
(
[account_id] => 1
[message] => 1
[message_id] => 1
[to_user_id] => 1
[messages] => 1
)

[[dirty]] => Array
(
)

[[original]] => Array
(
)

[[virtual]] => Array
(
)

[[errors]] => Array
(
)

[[invalid]] => Array
(
)

[[repository]] => Messages
)

Мой вопрос: как мне получить свойство «Ответы» элементов массива «ответы» для заполнения? то есть: как мне получить второй и третий и т. д. уровни ответов, которые будут заполнены в ответах?

1

Решение

Вы должны четко указать, что именно вы хотите содержать сейчас. Чтобы получить три уровня ответов, это должно сработать:

$message = $this->Messages->find('all', [
'contain' => ['Replies' => ['Replies' => ['Replies']]]
])->where(['Messages.id' => $id])->first();
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector