我已经成功制作了一个可搜索的下拉列表,每当我输入内容时,数据库中的数据都会出现在下拉列表中,现在我想在数据库中存储这些被选中的多个值。
我在控制器中的代码
$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 :(得分: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
,您可以从其他两个表中检索信息。
如果您需要更多信息,请缩小范围。你究竟想知道什么?