2015-06-03 2 views
0

Привет Я просто сделал функцию для сохранения данных в нескольких таблицах. Несмотря на то, что я следовал инструкциям в Instruction for Cakephp 3.0Как сохранить связанную таблицу в CakePHP 3.0

Он сохраняет данные только в одной таблице.

Пожалуйста, посмотрите, что я пропустил.

Спасибо

public function saveTest() 
{ 
    $goods = TableRegistry::get('Goods'); 
    //$data = $this->request->data; 
    $data = [ 
     'brand' => 'brand', 
     'name' => 'name', 
     'dis_price' => 100, 
     'w_price' => 90, 
     'line_des' => 'haha', 
     'line_w_des' => 'hehe', 
     'hash_tag' => 'hoho', 
     'price' => 100, 
     'good_stock' => [ 
      'options' => 'asd', 
      'stock_count' => 100 
    ]]; 
    Debugger::log($data); 
    $entity = $goods->newEntity($data, [ 
     'associated' => ['GoodsStocks'] 
    ]); 
    Debugger::log($goods->save($entity)); 
    //Debugger::log('3'); 
} 


public function initialize(array $config) 
{ 
    $this->entityClass('App\Model\Entity\Goods'); 
    $this->table('goods'); 
    $this->displayField('name'); 
    $this->primaryKey('id'); 
    $this->addBehavior('Timestamp'); 
    $this->hasMany('GoodsStocks',[ 
     'alias' => 'Users', 
     'foreignKey' => 'good_id', 
     'dependent' => true 
    ]); 
} 

К сожалению, он сохраняет данные только Товары таблицы.

Спасибо

+0

Где инструкции говорят, что имя свойства должно быть в единственном числе, проведение одномерный массив? – ndm

+0

Я пропустил соглашение об именах и многомерный массив. спасибо, что напомнили мне об этом. но даже если я изменил коды, он все равно не работает. –

ответ

1

Вашего массива для вашей ассоциации GoodStock должна быть ниже, подчеркнутой версией названия ассоциации. Кроме того, это, вероятно, не будет одномерным массивом, поэтому это ассоциация hasMany. Вы можете найти дополнительную информацию here.

Так что ваш код должен быть большеменьше как:

$data = [ 
    'brand' => 'brand', 
    'name' => 'name', 
    'dis_price' => 100, 
    'w_price' => 90, 
    'line_des' => 'haha', 
    'line_w_des' => 'hehe', 
    'hash_tag' => 'hoho', 
    'price' => 100, 
    'good_stocks' => [ 
     ['options' => 'asd', 'stock_count' => 100] 
    ] 
]; 

Я надеюсь, что вы найдете ее полезной.

PS: Извините за любые грамматические ошибки, но английский не мой родной язык;)

+0

Спасибо, что сообщили мне, что я испортил в инструкции. Тем не менее, он все еще не работает. –

+0

Oh !! наконец, я нашел решение !!! то, как вы описали, было правильным, но назвав себя. good_stocks должен быть goods_stocks, и я изменил Entity. спасибо –

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