Laravel:在字段上插入随机 id 具有自动增量 id

问题描述

生成随机 id 函数

class CreaterandomId {
    public static function get_id($my_table) {
        $id = mt_rand(1000000,9999999999); 
        if(self::check_id($id,$my_table)){
            get_id($my_table);
        }
        return $id;
    }

    public static function check_id($id,$my_table) {
        $table=DB::table($my_table)->where('id',$id)->get();
        if (count($table)==0) {
            return false;
        }
        return true;
    }
}
 

我使用了它并且它正确生成了 id 但是当我想将它保存为 id 时:

$new_user_id = CreaterandomId::get_id('users');   
    $user = User::create([
        'id' => $new_user_id,'social_id'=>$request->id,'client'=> $request->client,'username'=>$request->username,'password'=>$password,'email'=>$request->email,'pics'=>$request->pics,'role'=>'user'
    ]);

它不保存随机 id 而是保存 auto_incrementid

我查看此主题 How to disable Laravel eloquent Auto Increment? 但我不想删除自动增量我只想插入随机数据而不是它。

解决方法

让我们结束这个问题,正如您在评论中所说,解决这个问题的方法是使 id 字段可填充,使其看起来像这样

protected $fillable = ['id',...];
,

尝试将主键添加到可填充数组中,并像这样使增量为假:-

public $increment = false;
protected $fillable = ['id',..];