2013-08-07 1 views
0

В настоящее время я пытаюсь выяснить, как сохранить индексированный массив в поле в моей базе данных. Тем не менее, я знаю, что массив не может быть сохранен в базе данных, но вы можете его сериализовать или взорвать, а затем сохранить. Я не уверен, какой из них я должен использовать. Я не хочу, чтобы набор элементов сохранялся только в одной ячейке. Мне нужен список предметов, которые нужно сохранить один за другим в столбце. Итак, мой вопрос: мне нужно использовать метод serialize, implode или что-то еще? Вот проблеск моего кода и массива, который я пытаюсь сохранить.Сохранить индексированный массив

public function findPolicyIds($coverageId = null) { 
    $policyid = $this->Policy->find('all', array(
     'recursive' => -1, 
     'conditions' => array('Policy.coverage_id' => $coverageId), 
     'fields' => array('Policy.id'))); 

     foreach($policyid as $id) { 
      $all[] = $id['Policy']['id']; 




     } 
     return $all; 
} 


Array 
(
[0] => 5202834f-111c-4a76-8b33-1ed8ae78509d 
[1] => 5202834f-2ba8-4957-91db-1ed8ae78509d 
[2] => 5202834f-356c-49a1-beeb-1ed8ae78509d 
[3] => 5202834f-3b40-453f-a491-1ed8ae78509d 
+0

Я бы пошел сериализовать, аналогичный вопрос был задан: http://stackoverflow.com/questions/13197255/serialize-vs-implode – Sixthpoint

+0

Я не видел эту статью спасибо! – SkillSet

ответ

1

От этого зависит.

Это, вероятно, лучший ответ для вас.

Выполняйте все, что угодно, до тех пор, пока оно не волшебным образом не испортит данные между записью и чтением.

Lemme найдите момент, чтобы изучить несколько вариантов от вашего имени.

  • var_export() - не может быть лучшая идея, securitywise
  • сериализации() - кажется простым
  • взрываться() - кажется простым
  • json_encode() - кажется простой

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

В качестве альтернативы, почему бы не нормализовать схему и не добавить новую таблицу для представления этих коллекций массива-данных? Нормализация, как правило, спасает ваш бекон в будущем.

+1

Добавление новой таблицы и отношения 'hasMany()' в исходную таблицу - это самый безопасный для этого способ. – Derek

+0

Я не могу добавить другую таблицу. Причина в том, что у меня уже есть отношения. Мне нужно сохранить эти идентификаторы в другую таблицу, в которой PolicyId является внешним ключом. – SkillSet