База данных содержит следующие таблицы: posts
, posts_authors
и users
.CakePHP 3 - Две петли foreach и связанные модели
posts table fields
: идентификатор, имя, пробкового, содержание, создал, модифицированный, user_id (запись творца, не автор), и онлайн.posts_authors table fields
: идентификатор, POST_ID и user_id.users table fields
: идентификатор, имя, пробкового, электронная почта, пароль, COUNTRY_ID, аватар, создал, модифицированный и статус.
Я пытаюсь перечислить все должности и все автор для каждой должности, но я не знаю, как получить имя пользователей из их идентификаторов во втором цикле Еогеаспа.
КОД:
Мой Посмотреть
<?php foreach ($posts as $post): ?>
...
<ul>
<?php foreach ($post->authors as $authors): ?>
<li><?= $authors->users[0]->name ?></li>
<?php endforeach; ?>
</ul>
...
<?php endforeach; ?>
PostsAuthorsTable.php (модель)
...
$this->belongsTo('Users');
$this->belongsTo('Posts');
...
PostsTable.php (модель)
...
$this->belongsToMany('Users', [
'through' => 'PostsAuthors',
]);
...
UsersTable.php (модель)
...
$this->belongsToMany('Posts', [
'through' => 'PostsAuthors',
]);
...
PostsController.php (контроллер)
public function index()
{
$posts = $this->Posts->find('all', [
'conditions' => ['Posts.online !=' => -1]
])->order(['Posts.publication' => 'DESC'])->contain(['Users']);
$this->set(compact(['posts']));
}
хорошо, firts: как вы получаете массив '$ posts' в вашем контроллере? Тогда, если Post belogsToMany пользователи должны быть '$ post-> user' вместо' $ post-> author' – arilia
@arilia Спасибо, что комментировали! Просто добавила 'PostsController.php' к моему вопросу. – Benoda