- 日常难题记录:tp6 中的saveAll()的使用方法
控制器代码:
$Lay =new OddlayModel;
$res=$Lay->saveAll(input(‘post.’));//使用函数助手input(‘post.’)//一次传过来好多input表单值
return json_ok($res);//return $res数据
API测试方式:
当我们使用前端提交时,报500的错。查看具体时,错误代码为:
Argument 1 passed to think\Model::setAttr() must be of the type string, intXXXX
苦思冥想,前端不能用这批量写了也没用。。。。。
直到在后来在看文章时看到有个大佬时这样写的,给了我启发:
虽然报的错不一样,但是我们也可以直接强制把前端传过来的数据强制转换为数组(虽然我们接收的就是数组,强制转换最保险)
所以,我们把代码改进一下:
-
$Lay =new OddlayModel;//使用函数助手input(‘post.’)//一次传过来好多input表单值 //接收数组,但是前端传过来报500错
-
$res=$Lay->saveAll(input(‘post.res/a’));//res/a强制转换数组前端正常传
-
return json_ok($res);//return $res数据
APIpost工具提交的格式也相应改一下,如下的格式:
然后前端测试提交数组,成功提交到数据库,到此可以愈快下班回家干饭了;
最后贴一下控制器的完整代码:
<?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);
}
声明:本站所有资源,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。