Страница 1 из 1
Сделал перенос данных из одной таблицы в другую, перносится только одно значение из 3х
Добавлено: 2019.01.10, 16:10
riaron
Код: Выделить всё
<?php
use yii\helpers\Url;
use app\models\Orders;
use app\models\Orderid ;
use yii\widgets\ActiveForm;
use yii\helpers\Html;
use app\models\Basket;
$at=0;
foreach ($basket as $bask){$at+=$bask->good_qtty*$bask->price;}
if(!$user=Yii::$app->user->identity->username){$user=Yii::$app->request->userIP;}
$phone = filter_input(INPUT_POST, 'phone');
$submitt = filter_input(INPUT_POST, 'submitt');
$a=generateCode(15);
if(isset($submitt)){
$phone = filter_input(INPUT_POST, 'phone');
$modell = new Orderid();
$model = new Orders();
$a=generateCode(15);
for($i=1;$i<=Basket::find()->where(['user'=>$user])->count();$i++){
$bask=Basket::find()->limit($i)->one();
$model->name=$bask->name;
$model->user=$bask->user;
$model->good_id=$bask->good_id;
$model->producer=$bask->producer;
$model->price=$bask->price;
$model->good_qtty=$bask->good_qtty;
$model->goodtype=$bask->goodtype;
$model->phone=$phone;
$model->orderdate=date("Y.m.d H:i:s");
$model->orderid=$a;
$model->save();
}$modell->orderid=$a;
$modell->save();
//Basket::deleteAll(['user' => $user]);
}
Re: Сделал перенос данных из одной таблицы в другую, перносится только одно значение из 3х
Добавлено: 2019.01.10, 16:29
andku83
riaron писал(а): ↑2019.01.10, 16:10
Код: Выделить всё
<?php
...
for($i=1;$i<=Basket::find()->where(['user'=>$user])->count();$i++){
...
Зачем в цикле запрашивать количество?!
riaron писал(а): ↑2019.01.10, 16:10
Код: Выделить всё
<?php
...
$bask=Basket::find()->limit($i)->one();
...
Этим запросом вы всегда получаете один и тот же объект.
Делайте:
Код: Выделить всё
...
$baskets = Basket::find()->where(['user'=>$user])->all();
foreach($baskets as $basket) {
$order = new Order(); // у вас какая-то каша с Orderid и Orders ?!
$order->attributes; // заполняете данными
...
if (!$order->save()) {
var_dump($order->errors);
}
}
...
Re: Сделал перенос данных из одной таблицы в другую, перносится только одно значение из 3х
Добавлено: 2019.01.11, 18:03
bemulima
У вас в коде в цикле всё время одну и ту же корзину обновляете
Код: Выделить всё
$bask=Basket::find()->limit($i)->one();// вместо лимита дать условие where(["id_user" => $id_user])
Re: Сделал перенос данных из одной таблицы в другую, перносится только одно значение из 3х
Добавлено: 2019.01.14, 13:10
andku83
bemulima писал(а): ↑2019.01.11, 18:03
У вас в коде в цикле всё время одну и ту же корзину обновляете
Код: Выделить всё
$bask=Basket::find()->limit($i)->one();// вместо лимита дать условие where(["id_user" => $id_user])
Для этого запроса такое where ничего не изменит, либо получить все и походить по списку (как показано выше), либо использовать offset.
Второй способ не рекомендую из-за лишних обращений к БД.