Rah*_*ndi 3 php laravel laravel-5 laravel-excel maatwebsite-excel
如何使用导入excel更新数据库中的数据。我正在使用 laravel 5.7 和 maatwebsite 3.1
\n这是我的控制器:
\npublic function import()\n{\n $data = Excel::toArray(new ProdukImport, request()->file('file')); \n if ($data) {\n DB::table('produk')\n ->where('id_produk', $data['id'])\n ->update($data);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n这是我的导入类:
\n<?php\n\n namespace App\\Imports;\n\n use App\\Produk;\n use Maatwebsite\\Excel\\Concerns\\ToModel;\n use Maatwebsite\\Excel\\Concerns\\WithHeadingRow;\n\n\n class ProdukImport implements ToModel, WithHeadingRow\n {\n /**\n * @param array $row\n *\n * @return \\Illuminate\\Database\\Eloquent\\Model|null\n */\n public function model(array $row)\n {\n return new Produk([\n 'id_produk' => $row['id'],\n 'nama_produk' => $row['produk'],\n 'harga_jual' => $row['harga']\n ]);\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n这个 dd($data) 结果:
\narray:1 [\xe2\x96\xbc\n 0 => array:8 [\xe2\x96\xbc\n 0 => array:3 [\xe2\x96\xbc\n "id" => 1.0\n "produk" => "Pomade"\n "harga" => 90000.0\n ]\n 1 => array:3 [\xe2\x96\xbc\n "id" => 2.0\n "produk" => "Shampoo"\n "harga" => 90000.0\n ]\n 2 => array:3 [\xe2\x96\xbc\n "id" => 3.0\n "produk" => "Sikat WC"\n "harga" => 90000.0\n ]\n ]\n]\nRun Code Online (Sandbox Code Playgroud)\n结果$data是这样的:
$data = Excel::toArray(new ProdukImport, request()->file('file'));\nRun Code Online (Sandbox Code Playgroud)\n
根据$data数组的结构,您可能可以通过以下方式实现您想要的:
public function import()
{
$data = Excel::toArray(new ProdukImport, request()->file('file'));
return collect(head($data))
->each(function ($row, $key) {
DB::table('produk')
->where('id_produk', $row['id'])
->update(array_except($row, ['id']));
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9655 次 |
| 最近记录: |