首页 > 解决方案 > 从父控制器创建新的 hasMany 孩子

问题描述

我有两个控制器“事件”和“活动”,并且都有很多“与会者”。

$this->hasMany('Attendees')
    ->setClassName('Attendees')
    ->setForeignKey('foreign_id')
    ->setConditions(array('Attendees.class' => 'Activity'))
    ->setDependent(true);

在此处输入图像描述

我在我的参加者表中使用一个类和一个 foreign_id 来链接它们。我想在我的 ActivitiesController 中创建 addAttendee() 函数,例如添加一个新的与会者,但我不知道如何继续。

public function addAttendee($id = null)
{
    $activity = $this->Activities->get($id, ['contain' => ['Venues', 'Contacts']]);

    if ($this->request->is('post'))
    {
        ??
    }

    $this->set(compact('activity'));
}

我找到了一些关于保存关联但没有创建新关联的文档。

标签: cakephpcakephp-4.x

解决方案


您可以创建一个新Attendee实体,然后将其链接到您的$activity.

$data = ['first_name' => 'blah', 'last_name' => ... fields]);
$attendee = $this->Attendee->newEntity($data);

$this->Attendee->link($activity, [$attendee]);

来源:https://api.cakephp.org/4.2/class-Cake.ORM.Association.HasMany.html#link()


推荐阅读