Связь «Один ко многим» (One to many)
Связь «Один ко многим» позволяет к одной записи базы данных привязать несколько других записей, позволяя реализовать комментарии, галерею и другое.
Сначала для таблицы «comments» надо создать поле post_id, и в модели добавить метод $this->hasMany()
, внутри которой указать таблицу с комментариями.
# src/Model/Table/PostsTable.php class PostsTable extends Table { public function initialize(array $config): void { // … $this->hasMany('Comments'); } }
Теперь когда надо выбрать статью вместе с комментариями, надо добавить параметр contain
.
$post = $this->Posts->get($id, [ 'contain' => 'Comments' ]); // пример вывода комментариев foreach ($post->comments as $comment) { $comment->content; }
Будут выбираться те комментарии, в котором в поле «post_id» указан ИД текущей страницы.
Условия выборки комментариев
П умолчанию выбираются все комментарии для текущей страницы. Указать условия можно в модели через метод $this->setConditions()
.
# src/Model/Table/PostsTable.php class PostsTable extends Table { public function initialize(array $config): void { // выбирать комментарии со статусом "1" $this->hasMany('Comments') ->setConditions(['status' => 1]); } }
Поддержать автора