Несколько записей

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Несколько записей

Сообщение zxc »

Здравствуйте. Как заполнить таблицу с помощью страницы, написанной на php, сразу несколькими строками данных?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Несколько записей

Сообщение ElisDN »

foreach
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Re: Несколько записей

Сообщение zxc »

Пробовал, но проблема возникла. При заполнении одной таблицы с помощью другой не меняются данные (выводится одно и то же несколько раз)
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Re: Несколько записей

Сообщение zxc »

В чем может быть проблема?
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Re: Несколько записей

Сообщение zxc »

Код контроллера
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]);
}
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Несколько записей

Сообщение ElisDN »

Здесь "return $this->redirect" прерывает цикл.
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Re: Несколько записей

Сообщение zxc »

Даже после исправления так же выводит одну и туже запись несколько раз
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Re: Несколько записей

Сообщение zxc »

помогите, пожалуйста
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Несколько записей

Сообщение caHek2x »

покажите код как вы "исправили" ... и не ленитесь оформлять свои сообщения ... а именно оборачивать код в тег [code
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Re: Несколько записей

Сообщение zxc »

Код: Выделить всё

        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]);
	}

вот исправление
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Несколько записей

Сообщение ElisDN »

И проблема сейчас в чём? Где выводится одно и тоже?
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Несколько записей

Сообщение caHek2x »

и в чем беда ? в рендер вы отправляете получается только последний сохраненный $order ... но в базу вы сохраняете всё ... чего вы хотите добиться ? хотите отправить в рендер все $order ? записывайте их при сохранении в массив:
перед foreach
$orders = [];
после $order->save();
$orders[]=$order;

и у вас нет желания проверить save прошло успешно или нет ... ?! или вы уверены в данных ... ?
zxc
Сообщения: 98
Зарегистрирован: 2017.03.13, 01:06

Re: Несколько записей

Сообщение zxc »

Все, спасибо))
Закрыто