我已经成功地制作了一个可搜索的下拉列表,在其中,每当我键入一些内容时,来自数据库的数据都会出现在下拉列表中,现在我想将这些选中的多个值存储在数据库中。
我在控制器中的代码
$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',
),
));
提前谢谢
最佳答案
我的第一个答案误导了我,所以我把它删掉了,在这里再试一次。
你需要计划好你的数据库表。我在这里提个建议:
表项
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
表包项目
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
,您可以从其他两个表中检索信息。如果你需要更多的信息,请缩小你的问题范围。你到底想知道什么?