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', ...];
我有生成随机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', ...];