ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

thinkphp6 没有用类似 findOrCreate这样的方法 先查找如果有就更新 没有就新建

2024-07-10 12:30:35  阅读:218  来源: 互联网

标签:


在 ThinkPHP 6 中,没有内置的 findOrCreate 方法,但您可以根据业务需求自己编写一个类似的方法。

以下是一个示例实现,在数据库表中查找记录,如果找到则更新,否则创建新记录:

use think\Model;

class User extends Model
{
    // ...

    /**
     * 根据条件查找记录,如果找到则更新,否则创建新记录
     * @param array $where 查询条件
     * @param array $data 更新的数据
     * @return Model
     */
    public static function findOrCreate($where, $data)
    {
        // 根据条件查找记录
        $model = self::where($where)->find();
        
        if ($model) {
            // 如果找到记录,则更新数据
            $model->save($data);
        } else {
            // 如果未找到记录,则创建新记录
            $model = self::create($data);
        }
        
        return $model;
    }

    // ...
}

PHP

在上述示例中,我们通过一个静态方法 findOrCreate 来实现查找或创建记录的操作。该方法接受两个参数,$where 是查询条件,$data 是要更新或创建的数据。

使用该方法时,可以像下面这样调用:

$where = ['email' => 'test@example.com'];
$data = ['name' => 'Test User', 'age' => 25];

$user = User::findOrCreate($where, $data);

PHP

上述调用会先根据 $where 条件在 User 模型对应的数据库表中进行查找,如果找到记录则更新数据,否则创建新的记录,并返回相应的模型实例。

希望这个示例可以满足您的需求!

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有