laravel orm调用save方法,无数据问题

初试

问题描述

这里写描述
该方法未操作事务,$param里面也是有值的,在新增的时候,调用save方法,状态返回的是true,但是数据没有新增/修改到数据库,返回成功使用这种方法DB::enableQueryLog();
$back = $this->model->save($param);
$queries = DB::getQueryLog();
dd($queries);
打印出来是个[],是我哪里操作有问题吗

程序代码或配置

class UserPupilService extends BaseService
{
    /**
     * 构造函数
     */
    public function __construct()
    {
        $this->model =  G(UserPupilModel::class);
    }

    /**
     * 新增数据
     * @return bool
     */
    public function saveData($params)
    {
        // 删除多余字段
        unset($params['type']);

        $back = false;
        // 通过用户Id检索不存在则创建一个实例
        $info = $this->getPupilInfo(array('user_id' => $params['user_id']));
        if(!$info){
            // 加入主键Id
            $params['id'] = G(SnowFlake::class)->createId();
            $params['create_time'] = date('Y-m-d H:i:s');
            $back = $this->model->save($params);

        }else{
            $arr = $info->toarray();
            // 数据查重
            $array_diff_assoc = array_diff_assoc($params, $arr);
            // 加入修改时间
            $array_diff_assoc['update_time'] = date('Y-m-d H:i:s');
            // 修改数据信息
            //foreach ($array_diff_assoc as $k => $val){
                //$info->$k = $val;
            //}
            //$back = $info->save();

            $back = $info->fill($array_diff_assoc)->save();
            var_dump($back);
        }

//        return $back;
    }

    /**
     * 获取认证记录信息
     *
     * @param array $where
     * @return mixed
     */
    public function getPupilInfo(array $where)
    {
        return $this->model
            ->selectRaw('user_id, real_name, unit_school, specialty, education, enrollment_year')
            ->where($where)
            ->first();
    }

}
162 0 0
0个回答

🔝