2015-09-07 2 views
2

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

Мой код в контроллере

$temp = $model->package_item = $_POST['package_item']; 
foreach($temp as $t) 
{ 
    $model->package_item=$t;      
} 

Package_item это поле, в котором применяется список поиска раскрывающийся, и я выбрать несколько значений, то теперь, как я могу сохранить эти значения в базе данных, так что у меня будет один id, но против этого id, package_item будет иметь несколько значений, а остальные атрибуты будут повторяться. Как и ниже.

 id------package_item------package_description------package_name 
    1--------cake------------ very cheap-------------get one buy one free 
    1---------candles---------- very cheap-------------get one buy one free 
    1----------fireworks--------very cheap-------------get one buy one free 

Я использую select2 расширение и вот код для этого в файл представления

$this->widget('ext.select2.ESelect2', array(
     'name' => 'package_item', 
     'data' => CHtml::listData(Package::model()->findAll(), 'id', 'package_item'), //the whole available list 
     'htmlOptions' => array(
      'placeholder' => ' search packge item?', 
      //'options' => $options, //the selected values 
      'multiple' => 'multiple', 
      'style'=>'width:530px', 
     ), 
)); 

Заранее спасибо

ответ

0

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

Вам необходимо запланировать таблицы базы данных. Я делаю предложение здесь:

Таблица Элементы

itemId[PK]|  name  | price |...| 
    1 |  cake  | 5.00 
    2 |  candles | 2.00 
    3 |  fireworks | 10.00 
    4 | expensiveStuff | 50.00 

Таблица Пакеты

packageId[PK] |  name  |  description  | price | 
    1  | full package | super cheap  | 12.00 
    2  | epic package | best value for money | 55.00 

Таблица PackagesItems

packageId[PK][FK]|itemId[PK][FK]|amount 
1 | 1 | 1 
1 | 2 | 1 
1 | 3 | 1 
2 | 1 | 2 
2 | 2 | 2 
2 | 3 | 3 
2 | 4 | 1 

Вы бы затем запросить свои пакеты, как это:
SELECT itemId FROM PackagesItems WHERE packageId = 1, например

Ключевое слово этого ответа является COMPOSITE PRIMARY KEY, который вы можете увидеть в третьей таблице: есть два первичных ключей, которые также внешние ключи, которые приводят к другие таблицы.

С SQL JOINS вы можете получить информацию из двух других таблиц. Если вам нужна дополнительная информация, пожалуйста, сузите сферу вашего вопроса. Что именно вы хотите знать?

Смежные вопросы