Несколько записей
Несколько записей
Здравствуйте. Как заполнить таблицу с помощью страницы, написанной на php, сразу несколькими строками данных?
Re: Несколько записей
foreach
Re: Несколько записей
Пробовал, но проблема возникла. При заполнении одной таблицы с помощью другой не меняются данные (выводится одно и то же несколько раз)
Re: Несколько записей
В чем может быть проблема?
Re: Несколько записей
Код контроллера
public function actionOrder($id)
{
$user = \app\models\User::find()->where(['id'=>$id])->one();
$cart = \app\models\Cart::find()->where(['user_id'=>$user->id])->all();
//$book = \app\models\Book::find()->all();
$transaction = \app\models\Transaction::find()->all();
foreach($cart as $index=>$c)
{
//$book = \app\models\Book::find()->where(['id' => $cart->book_id])->one();
$order = new \app\models\Purchased();
$order->user_id = Yii::$app->user->id;
$order->book_id = $c->book_id;
$order->permanent = $c->type;
$order->purchased = date("d.m.Y");
if ($order->permanent == 'sale')
{
$order->deadline = 0;
}
else
{
$order->deadline = date("d.m.Y", (time()+60*60*24*14));
}
/*if(isset($transaction))
{
$order->id_transaction = $transaction->id;
}
elseif (!isset($transaction))
{
$order->id_transaction = 0;
}*/
$order->active = 0;
if($order->save())
{
return $this->redirect(['/cart?id='.Yii::$app->user->id]);
}
}
return $this->render('order', ['order' => $order, 'cart'=>$cart, 'user'=>$user,
'transaction' => $transaction]);
}
public function actionOrder($id)
{
$user = \app\models\User::find()->where(['id'=>$id])->one();
$cart = \app\models\Cart::find()->where(['user_id'=>$user->id])->all();
//$book = \app\models\Book::find()->all();
$transaction = \app\models\Transaction::find()->all();
foreach($cart as $index=>$c)
{
//$book = \app\models\Book::find()->where(['id' => $cart->book_id])->one();
$order = new \app\models\Purchased();
$order->user_id = Yii::$app->user->id;
$order->book_id = $c->book_id;
$order->permanent = $c->type;
$order->purchased = date("d.m.Y");
if ($order->permanent == 'sale')
{
$order->deadline = 0;
}
else
{
$order->deadline = date("d.m.Y", (time()+60*60*24*14));
}
/*if(isset($transaction))
{
$order->id_transaction = $transaction->id;
}
elseif (!isset($transaction))
{
$order->id_transaction = 0;
}*/
$order->active = 0;
if($order->save())
{
return $this->redirect(['/cart?id='.Yii::$app->user->id]);
}
}
return $this->render('order', ['order' => $order, 'cart'=>$cart, 'user'=>$user,
'transaction' => $transaction]);
}
Re: Несколько записей
Здесь "return $this->redirect" прерывает цикл.
Re: Несколько записей
Даже после исправления так же выводит одну и туже запись несколько раз
Re: Несколько записей
помогите, пожалуйста
Re: Несколько записей
покажите код как вы "исправили" ... и не ленитесь оформлять свои сообщения ... а именно оборачивать код в тег [code
Re: Несколько записей
Код: Выделить всё
public function actionOrder($id)
{
$user = \app\models\User::find()->where(['id'=>$id])->one();
$cart = \app\models\Cart::find()->where(['user_id'=>$user->id])->all();
//$book = \app\models\Book::find()->all();
$transaction = \app\models\Transaction::find()->all();
foreach($cart as $index=>$c)
{
//$book = \app\models\Book::find()->where(['id' => $cart->book_id])->one();
$order = new \app\models\Purchased();
$order->user_id = Yii::$app->user->id;
$order->book_id = $c->book_id;
$order->permanent = $c->type;
$order->purchased = date("d.m.Y");
if ($order->permanent == 'sale')
{
$order->deadline = 0;
}
else
{
$order->deadline = date("d.m.Y", (time()+60*60*24*14));
}
/*if(isset($transaction))
{
$order->id_transaction = $transaction->id;
}
elseif (!isset($transaction))
{
$order->id_transaction = 0;
}*/
$order->active = 0;
/*if($order->save())
{
return $this->redirect(['/cart?id='.Yii::$app->user->id]);
}*/
$order->save();
}
return $this->render('order', ['order' => $order, 'cart'=>$cart, 'user'=>$user,
'transaction' => $transaction]);
}
вот исправление
Re: Несколько записей
И проблема сейчас в чём? Где выводится одно и тоже?
Re: Несколько записей
и в чем беда ? в рендер вы отправляете получается только последний сохраненный $order ... но в базу вы сохраняете всё ... чего вы хотите добиться ? хотите отправить в рендер все $order ? записывайте их при сохранении в массив:
перед foreach
$orders = [];
после $order->save();
$orders[]=$order;
и у вас нет желания проверить save прошло успешно или нет ... ?! или вы уверены в данных ... ?
перед foreach
$orders = [];
после $order->save();
$orders[]=$order;
и у вас нет желания проверить save прошло успешно или нет ... ?! или вы уверены в данных ... ?
Re: Несколько записей
Все, спасибо))