Doszedłem do sytuacji, w której potrzebuję partycji, aby zapisać obiekty z ich obiektami pokrewnymi w grze 4. Zasadniczo to, co robię, to masowe wstawianie obiektów, w których każdy obiekt może mają wiele znaczników (relacja wiele do wielu).Batch Wstawianie obiektów z relacjami w Laravel-4
Oto przykładowy kod Zauważ, komentarze TODO:
[...]
$batchData = array();
$rowCount = 0;
foreach ($dataArray as $key => $row) {
[...]
// parsing row from CSV
$obj = array();
foreach ($row as $attribute => $value) {
$obj['template_id'] = $templateId;
$obj['batch_id'] = $batchId;
$obj['user_id'] = $confideUserId;
$obj['created_at'] = new \DateTime;
$obj['updated_at'] = new \DateTime;
// Attach Tags if any exist
if ($attribute === 'tags') {
if (!is_null($value) || !is_empty($value)) {
$tags = explode(":", $value);
// TODO: Get tag ID for each tag and add to $obj['tags'] array
}
}
}
// add object to array
$batchData[$rowCount] = $obj;
++$rowCount;
if ($rowCount == \Config::get('app.maxCSV')) {
try {
// TODO: Batch Insert With Related tags??
$obj_model_name::insert($batchData);
} catch (Exception $e) {
return false;
}
$rowCount = 0;
$batchData = array();
}
}
[...]
mogę wstawić każdy obiekt jeden po drugim z ich relacji, ale problemem jest to, że masowy wstawić te obiekty za pomocą pliku CSV, gdzie możemy mieć od setek do setek tysięcy obiektów.
Ktoś ma jakieś wskazówki?
FYI baza danych używana jest MSSQL 2012.
Cheers,