Цикл foreach в laravel сохраняет только последний элемент массива в таблице БДPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Цикл foreach в laravel сохраняет только последний элемент массива в таблице БД

Сообщение Anonymous »

У меня есть функция в моем контроллере, которая использует PHP Excel для чтения строк из файла Excel и сохранения их в таблице БД.

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

public function processData(Request $request)
{
/* store data from form in to variables */
$hotel = $request->input('hotel');
$date = $request->input('date');
$start_row = $request->input('row');
$date_col = $request->input('date-col');
$sold_col = $request->input('sold-col');
$rev_col = $request->input('rev-col');

/* get tables name */
$table = str_replace('-', '_', $hotel);
$monthly_table = $table . '_monthly';

/* init hotel class */
$hotel_table = new Hotel($table);

$file = public_path().'/'.$date.'.xls';

$sheetData = Excel::load($file)->noHeading()->getExcel()->getSheet()->toArray(null,false,false, true);
$sheetData = array_slice($sheetData, $start_row - 1);

foreach ($sheetData as $row)
{
if ($this->isDate($row[$date_col]))
{
print $row[$date_col] . "---" . $row[$sold_col] . "---" . gettype(money_format('%i', floatval($row[$rev_col]))) . "
";
$hotel_table->date = $row[$date_col];
$hotel_table->sold = intval($row[$sold_col]);
$hotel_table->sold_diff = 0;
$hotel_table->rev = floatval($row[$rev_col]);
$hotel_table->rev_diff = 0;
$hotel_table->row = $start_row;
$hotel_table->date_col = $date_col;
$hotel_table->sold_col = $sold_col;
$hotel_table->rev_col = $rev_col;
//$hotel_table->save();
if (!$hotel_table->save())
{
dd ( DB::getQueryLog() );
}

}
}

}

public function isDate($date)
{
if (date('m/d/Y', strtotime($date)) == $date)
{
return true;
}
else
{
return false;
}
}
это мой стол

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

Schema::create($tableName, function (Blueprint $table) {
$table->increments('id');
$table->string('date');
$table->integer('sold');
$table->integer('sold_diff');
$table->float('rev');
$table->float('rev_diff');
$table->string('row');
$table->string('date_col');
$table->string('sold_col');
$table->string('rev_col');
$table->timestamps();
});
когда я прохожу через foreach, все нормально печатается на экране, ошибок нет, но когда я смотрю на таблицу, в ней есть только последний элемент массива в таблице БД.

Подробнее здесь: https://stackoverflow.com/questions/351 ... n-db-table
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»