framework
framework copied to clipboard
saveAll 同时新增/更新数据时数据错误应如何处理?
如题,使用 saveAll 关联新增数据的时候,因为同时包含有:新增的数据(没有 主键id)与更新的数据(有 主键id)导致数据只更新了一条,怎么处理?
把有主键和无主键分离出来,然后事务下分别 saveAll ?
把有主键和无主键分离出来,然后事务下分别 saveAll ?
不清楚为什么出现的这种状况,感觉最好底层处理下
$user = new User;
$list = [
['id'=>1, 'name'=>'thinkphp', 'title'=>'[email protected]'],
['name'=>'onethink', 'title'=>'[email protected]']
];
$user->saveAll($list);
没有问题,带主键的会更新,没有主键的新增
你这是单纯的saveAll,他说的是模型一对多的操作
$blog = Blog::find( 1 ); $blog->comment()->saveAll( [ ['id' => 1,'content' => 'aaaaa',], ['content' => 'bbbbbb'] ] ); 一样的啊
你是在面向 issue 编程吗?
$blog = Blog::find( 1 ); $blog->comment()->saveAll( [ ['id' => 1,'content' => 'aaaaa',], ['content' => 'bbbbbb'] ] ); 一样的啊
我又试了下还是这样,可能是我的代码逻辑结构有问题,我再看看。另外我又发现了一个问题,如果批量新增的两条数据【唯一字段】相同,则只会新增一次,不会提示重复,我在多测试测试看看吧。
你是在面向 issue 编程吗?
用其他方法倒是也能做,就是麻烦点儿。这里发现问题了我就提出来了,方便其他用户注意及框架发展。
https://user-images.githubusercontent.com/45870098/194215854-44dd33ad-f561-40b0-be02-bc678e38c4ed.mp4
还是不行,感觉是 Postman 的问题