我有三张桌子
1 - Items
2 - Suppliers
3 - Item_Suppliers
第三是项目与供应商之间的交叉参考表。
我的问题是如何使用propel保存和更新item_supplier表。
在项目页面上,客户可以选择多个供应商,然后将其发送到db中保存。有没有办法将它保存到DB默认的Propel 1.6函数。这就是数据来自用户界面的方式。
array:8 [
"Name" => "Strawberry"
"CategoryId" => "2"
"suppliers" => array:3 [
0 => "1"
1 => "2"
2 => "3"
]
"Points" => "20"
"Description" => "Strawberry Description"
]
答案 0 :(得分:0)
您应该在isCrossRef="true"
关系的架构中设置Item_Suppliers
属性:
<table name="Item_Suppliers" isCrossRef="true">
<column name="ItemId" type="integer" primaryKey="true"/>
<column name="SupplierId" type="integer" primaryKey="true"/>
<foreign-key foreignTable="Item" onDelete="CASCADE" onUpdate="CASCADE">
<reference local="ItemId" foreign="Id"/>
</foreign-key>
<foreign-key foreignTable="Supplier" onDelete="CASCADE" onUpdate="CASCADE">
<reference local="SupplierId" foreign="Id"/>
</foreign-key>
</table>
然后使用生成的方法更新相关模型:
$suppliers = SupplierQuery::create()->filterById( $input["supplier_ids"] )->find();
$item->setSuppliers( $suppliers )->save();