批量添加商品
<ul>
<li>商家批量添加商品功能,或者批量导入商品,通过数组来进行模拟。</li>
<li>要求前端提交数据,不在数据库内进行添加,已经在数据库内进行修改。数据库内已经有的数据,并且不是前端提交的数据,这些数据进行删除。</li>
</ul>
<h2>实现</h2>
<pre><code class="language-php">function getData(array $db, array $data)
{
// 处理后的数据格式。目的:尽量减少对数据库操作。通常是先把数据库中已有数据都删除掉,再把数据进行添加操作。
$list = [
'Add' => [], // 需要添加的数据
'Update' => [], // 需要修改的数据
'Delete' => [], // 需要删除的数据
];
foreach ($data as $item) {
$GoodsID = $item['GoodsID'];
if (empty($db[$GoodsID])) {
$list['Add'][] = $item;
} else {
$list['Update'][] = $item;
unset($db[$GoodsID]);
}
}
$list['Delete'] = $db;
return $list;
}</code></pre>
<h2>测试</h2>
<pre><code class="language-php">// 数据库查询数据,条件为商家ID(StoreID = 10)。此数据为商家所属商品,商品名称唯一,已经处理后的数据格式,索引为商品ID(GoodsID)
$db = [
1 => ['GoodsID' => 1, 'GoodsName' => '苹果手机', 'StoreID' => 10],
3 => ['GoodsID' => 3, 'GoodsName' => '小米手机', 'StoreID' => 10]
];
// 前端提交数据,已经处理后的数据格式,商品ID不存在为0
$data = [
['GoodsID' => 1, 'GoodsName' => '苹果手机 12 pro max', 'StoreID' => 10],
['GoodsID' => 0, 'GoodsName' => '华为手机', 'StoreID' => 10],
];
$getData = getData($db, $data);
var_export($getData);</code></pre>
<h2>结果</h2>
<pre><code class="language-php">array (
'Add' => array (
0 => array (
'GoodsID' => 0,
'GoodsName' => '华为手机',
'StoreID' => 10,
),
),
'Update' => array (
0 => array (
'GoodsID' => 1,
'GoodsName' => '苹果手机 12 pro max',
'StoreID' => 10,
),
),
'Delete' => array (
3 => array (
'GoodsID' => 3,
'GoodsName' => '小米手机',
'StoreID' => 10,
),
),
)</code></pre>