CakePHP 3.x - сохранить не работать в ассоциированной таблице - PullRequest
1 голос
/ 28 июня 2019

У меня ниже структура таблицы.

Таблица мандатов

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, semin_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
)

1 Ответ

0 голосов
/ 28 июня 2019

Смотри, у тебя есть две таблицы Mandator и Similar в единственном числе, но у тебя соединительная таблица во множественном числе. Во-первых, проверьте это. Если проблема не устранена, проверьте это CakePHP Through Association

Как видите, ваша ассоциация должна быть такой:

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

И еще один совет: таблица должна называться множественным числом.

...