Yii2 Как я могу использовать save () с этим массивом? - PullRequest
0 голосов
/ 23 мая 2018

У меня проблема с моим кодом.Я хочу клонировать строку и в этой строке есть три данных.Каждый параметр - это отдельная таблица БД.Когда я запускаю код, Yii2 говорит об ошибке:

Вызов функции-члена save () для массива

это в моем контроллере:

public function actionClone($id)
{   
    $clone = Helper::get_clone_offer($id);
    if ($clone->save()) Helper::add_history(null, null, $id, '', 
    'Clone', 'Done', 0, 0, 'Offer', 1, 0, '');
    return $this->redirect(['index']);
}

это в моем Помощнике:

public static function get_clone_offer($id)
{

    $offer = Offers::findOne($id);
    $product = Helper::get_product_name($offer->id);
    $accessory = Helper::get_offer_product_accessories($offer->id);
    $clone = [$offer,$product,$accessory];
    $clone[0]->parent_id = $clone[0]->id; 
    $clone[0]->id += 1000 ;
    return $clone;
}

Я новичок в Yii2 и php.Спасибо за помощь.

1 Ответ

0 голосов
/ 23 мая 2018

Вы не объяснили, чего вы на самом деле пытаетесь достичь, но для ошибки, которая выдается, это определенная вещь, поскольку $clone, который вы возвращаете из функции get_clone_offer(), не должен иметь метод save() какэто массив.

Вы должны попытаться вызвать $clone[0]->save(), если вы пытаетесь сохранить модель $offer, что, я думаю, вы пытаетесь сделать, потому что вы устанавливаете Offer модель idв поле parent_id в функции get_clone_offer() и $ clone - массив моделей, и вызов

  • $clone[0]->save() сохранит модель Offer
  • $clone[1]->save() сохранит Product модель
  • $clone[2]->save() сохранит ProductAccessories модель

Более того, вы должны добавить методы get_product_name, get_offer_product_accessories в соответствующих моделяхвместо создания методов Helper.

...