当前位置:  开发笔记 > 编程语言 > 正文

批量分配问题

如何解决《批量分配问题》经验,为你挑选了1个好方法。



1> Tim van Uum..:

使用插入方法,如:

$model->insert([
    ['email' => 'taylor@example.com', 'votes' => 0],
    ['email' => 'dayle@example.com', 'votes' => 0]
]);

另见:http://laravel.com/docs/5.1/queries#inserts

编辑:

更新到您的代码:

public function postSpecs(Request $request)
{
    $specs = $request->except(['_token', 'deviceid']);

    $data = array();
    foreach($specs as $key=>$val)
    {
        if($val == '') continue;
        if(Spec::where('category', $key)->where('device', $request->deviceid)->exists())
        {
            $spec = Spec::where('category', $key)->where('device', $request->deviceid)->first();
            $spec->value = $val;
            $spec->save();
        }
        else
        {
            $data[]['category'] = $key;
            $data[]['device'] = $request->deviceid;
            $data[]['value'] = $val;
        }
    }

    Spec::insert($data);
}

虽然这并不完美,但它可以为您节省大量的查询.否则你必须使用原始查询(未经测试!):

INSERT INTO spec (id,category,device,value) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE id=LAST_INSERTED_ID(id)

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有