日常难题记录:tp6 中的saveAll()的使用方法
控制器代码:

$Lay =new OddlayModel;
        $res=$Lay->saveAll(input('post.'));//使用函数助手input('post.')//一次传过来好多input表单值 
        return json_ok($res);//return $res数据

API测试方式:

 70ce6bdbb2254e62abf37a4b747931f1.png

 当我们使用前端提交时,报500的错。查看具体时,错误代码为:

Argument 1 passed to think\Model::setAttr() must be of the type string, intXXXX

苦思冥想,前端不能用这批量写了也没用。。。。。

直到在后来在看文章时看到有个大佬时这样写的,给了我启发:

a6421f0bb0a747c18fbf2d1d8f0490e9.png

 虽然报的错不一样,但是我们也可以直接强制把前端传过来的数据强制转换为数组(虽然我们接收的就是数组,强制转换最保险)

所以,我们把代码改进一下:

        $Lay =new OddlayModel;//使用函数助手input('post.')//一次传过来好多input表单值 //接收数组,但是前端传过来报500错
        $res=$Lay->saveAll(input('post.res/a'));//res/a强制转换数组前端正常传
        return json_ok($res);//return $res数据

APIpost工具提交的格式也相应改一下,如下的格式:

d02aa2a869fe4db3a9af8cf29424c22a.png

然后前端测试提交数组,成功提交到数据库,到此可以愈快下班回家干饭了;

最后贴一下控制器的完整代码:

<?php
declare (strict_types=1);

namespace app\controller\admin;

use app\controller\admin\Base;
use app\traits\ControllerTrait;
use think\annotation\route\Group;
use think\annotation\Route;
use app\model\Oddlay as OddlayModel;//模型重命名
/**
 * Class Oddlay
 * @package app\controller\admin
 * @Group("admin/Oddlay")
 */

class Oddlay extends Base
{
    use ControllerTrait;

    /**
     * 测试费用批量保存--没问题
     * @Route("gettestt", method="POST")
     * 数据格式
     *
     */
    //使用注解路由 @Route("gettestt", method="POST")
    public function gettestt(){
        $Lay =new OddlayModel;//使用函数助手input('post.')//一次传过来好多input表单值 //接收数组,但是前端传过来报500错
        $res=$Lay->saveAll(input('post.res/a'));//res/a强制转换数组前端正常传
        return json_ok($res);//return $res数据
        //返回数组
        // dump($res);
    }
}

不是专业做这个的,有说的错误之处,勿喷~

只是记录自己一个小白遇到的难点和解决方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43915164/article/details/127558402
 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐