['grade'=>3,'num'=>['num2'=>6,'num3'=>6]], self::MODEL_TWO => ['grade'=>3,'num'=>['num2'=>6,'num3'=>4]], self::MODEL_THREE => ['grade'=>2,'num'=>['num2'=>10]], ]; public function get_child(){ return $this->hasMany(Trace::class,'pid'); } public function get_childs(){ return $this->hasMany(Trace::class,'pid','sort'); } public function user(){ return $this->belongsTo(User::class,'user_id'); } public function get_goods(){ return $this->belongsTo(TraceGoods::class,'good_select_id'); } public function get_express(){ return $this->hasMany(TraceExpress::class,'select_id'); } public static function add_code($pid,$grade,$num) { if($pid==0){ $level=1; }else{ $ll=Trace::where('id',$pid)->value('level'); $level=$ll+1; } if($level==$grade){ $is_lowest=1; $child_num=0; }else{ $n='num'.($level+1); $child_num=$num[$n]; $is_lowest=0; } $code=self::code(); $result=Trace::create([ 'level'=>$level, 'pid'=>$pid, 'track_status'=>0, 'is_true'=>0, 'com_binding'=>1, 'user_id'=>null, 'security_code'=>$code['sec_code'], 'code'=>$code['code'], 'child_num'=>$child_num, 'select_num'=>0, 'is_lowest'=>$is_lowest, ]); return $result->id; } public static function code(){ $str='QWER34TYUIO_2PASDFG1HJK567LZXC890VBNM'; $code=''; for ($i=0;$i<8;$i++){ $num=rand(0,37); $code.=mb_substr($str,$num,1); } $code1=Str_random(10); $code=date('y',time()).$code1.mb_substr(hash('sha256',$code),1,8).$code.date('md',time()); return ['code'=>$code,'sec_code'=>mt_rand(1000,9999).mt_rand(1000,9999)]; } }