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

Laravel : insert random id on field have autoincrement 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

我查看此主题 但我不想删除自动增量我只想插入随机数据而不是它。

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

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

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

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