2015-04-08 4 views
0

У меня в настоящее время имеет отношение toMany между двумя Таблица, Skus и Medias. Однако я назвал таблицу соединений skus_images.Торт 3 сбережения принадлежитToMany отношения сбоев

Я пытаюсь сохранить только идентификаторы, а не вставлять новые данные в путь HABTM. у меня в форме:

echo $this->Form->input('images._ids', ['options' => $images, 'multiple' => 'checkbox']); 

И все работает нормально там, я правильно получать мои Medias в списке. Но всякий раз, когда я пытаюсь отправить форму, я получаю это:

Error: Call to a member function get() on a non-object 
File /home/weshguillaume/AndyToGaby/vendor/cakephp/cakephp/src/ORM/Association/BelongsToMany.php 
Line: 874 

Я уже определили свои отношения как таковые в SkusTable:

$this->belongsToMany('Images', [ 
    'className' => 'Media.Medias', 
    'joinTable' => 'skus_images', 
    'targetForeignKey' => 'image_id' 
]); 

контекст не дает понимания, ни один не делает трассировка стека, поскольку она (почти) пустая. Спасибо :)

EDIT: контроллер добавить метод:

public function add($product_id) 
    { 
     $skus = $this->Skus->newEntity(); 
     if ($this->request->is('post')) { 
      $skus = $this->Skus->patchEntity($skus, $this->request->data(), [ 
       'associated' => [ 
        'Attributes' 
       ] 
      ]); 
      if ($this->Skus->save($skus)) { 
       $this->Flash->success('The skus has been saved.'); 
       return $this->redirect(['action' => 'index']); 
      } else { 
       $this->Flash->error('The skus could not be saved. Please, try again.'); 
      } 
     } 
     $attributes = $this->Skus->Attributes->find('list'); 
     $images = $this->Skus->Products->getMedias('list', $product_id, 'photo'); 
     $this->set(compact('skus', 'products', 'attributes', 'images', 'product_id')); 
     $this->set('_serialize', ['skus']); 
    } 

контроллер размещены данные:

[ 
    'product_id' => '65', 
    'attributes' => [ 
     '_ids' => '' 
    ], 
    'reference' => '', 
    'quantity' => '420', 
    'is_default' => '0', 
    'images' => [ 
     '_ids' => [ 
      (int) 0 => '90' 
     ] 
    ] 
] 
+0

Пожалуйста, откройте билет, фатальная ошибка должна быть предотвращена. В то же время. Можете ли вы предоставить данные, которые отправляются на контроллер, а также вставить код контроллера, пожалуйста. –

+0

Я добавил данные и метод контроллера. Я создаю билет на Cake3 github. благодаря – whitep4nther

ответ

0

Забыл добавить имя ассоциации в patchEntity associated вариант. Все равно не следует бросать роковую ошибку, поэтому я создал билет github.

Смежные вопросы