Я кодирую с помощью фреймворка PHP - Laravel. Этот код предназначен для загрузки изображений на Amazon S3 и хранения каждого данные изображения в MySQL таблице:Массовая вставка в таблицу с использованием массива
$created_at = new DateTime;
$aws_path = 'path/to/folder';
$files = Input::file('images');
$insert[] = array(); #Initialize array for mass inserting into table
foreach($files as $file) {
# Image data
$image_id = mt_rand(1000000000,9999999999);
$extension= $file->guessClientExtension();
$filename = $aws_path.'/'.$image_id.".".$extension;
$path = $file->getRealPath();
#UPLOAD IMAGE TO AMAZON S3
$obj = array(
'Bucket' => 's3.bucket.com',
'Key' => $filename,
'SourceFile' => $path,
'ACL' => 'public-read',
);
AWS::get('s3')->putObject($obj);
$insert[] = array(
'car_id' => $car_id,
'image_id' => $image_id,
'image_extension' => $extension,
'is_main' => true,
'created_at' => $created_at
);
}
DB::table('images')->insert($insert); #THIS LINE DOESN'T WORK
Теперь, этот код работает 100%, за исключением того я не в состоянии представить данные в моей таблице , Переменная $ insert должна быть заполнена данными каждого изображения, а затем после окончания цикла foreach я «вставляю» данные в $ insert в таблицу, называемую «изображениями».
У меня нет ошибок, это просто не работает. Почему это происходит? Заранее спасибо.
Привет, я просто попытался сделать это и не работал:/ – Daniel
Попробуйте проверить схему таблиц и сравнить ее со вставкой. Я бы получил сырую рабочую вставку в прямом sql для тестирования, а затем преобразовал ее в формат laravel. –
Он отлично работает, если я использую его внутри цикла foreach и без использования массива для массового ввода – Daniel