【问题标题】:CakePHP 3.x - save not work in associate tableCakePHP 3.x - 保存在关联表中不起作用
【发布时间】:2019-11-10 02:49:55
【问题描述】:

我有下表结构。

委托人表

class MandatorTable extends Table
{
public function initialize(array $config)
    {
        $this->table('mandators');

        $this->belongsToMany('Seminar', [
            'foreignKey' => 'mandator_id',
            'targetForeignKey' => 'seminar_id',
            'joinTable' => 'mandators_seminars'
        ]);
    }
}

半桌

class SeminarTable extends Table
{
    public function initialize(array $config)
    {
        $this->table('seminars');

        $this->belongsToMany('Mandator', [
            'foreignKey' => 'seminar_id',
            'targetForeignKey' => 'mandator_id',
            'joinTable' => 'mandators_seminars'
        ]); 
    }   
}

两个表都属于'mandators_seminars'表

mandator_id,seminar_id

当我保存数据时,它会保存在研讨会表中,但不会保存在“mandators_seminars”表中

查询

$seminartable = $this->Seminar->newEntity();

$this->request->data['mandator'][0] = 1;

$seminardata = $this->Seminar->patchEntity($seminartable, $this->request->data);
$this->Seminar->save($seminardata)

请求数据

Array
(
    [bookable] => test
    [released] => aaa
    [linkable] => bb
    [name] => ccc
    [internalnote] => ddd
    [abstract] => ttt
    [description] => ddd
    [Category] => 14
    [mandator] => Array
        (
            [0] => 1
        )

    [mandator_owner_id] => 1
)

【问题讨论】:

    标签: cakephp-3.7


    【解决方案1】:

    看你有两个表 Mandator 和 Similar as single ,但你的连接表是复数。首先检查这个。如果还有问题,请查看CakePHP Through Association

    如您所见,您的关联应该是这样的:

    $this->belongsToMany('Mandator', [
            'foreignKey' => 'seminar_id',
            'targetForeignKey' => 'mandator_id',
            'through' => 'PluginName.MandatorsSeminars'
            'joinTable' => 'mandators_seminars',
            'className' => 'PluginName.Mandator'
        ]); 
    

    还有一个提示:table 应该被称为复数形式。

    【讨论】:

    • 将 Mandator 和 Seminar 表更改为复数后,它不起作用。
    • 所以尝试在 Mandators 中创建与 MandatorsSeminars 表的关联,然后在保存实体后,在 MandatorsSeminars 中创建并保存实体,或者检查在 Mandators 中是否与 MandatorsSeminars 有关联。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2015-11-07
    • 2020-12-05
    • 1970-01-01
    相关资源
    最近更新 更多