Laravel MySQL многострочная вставка пропустить существующие записи - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть 2-х кратный массив, и я делаю цикл, чтобы вставить новую вейл в базу данных, но когда я добавил проверку, тогда, когда условие становится истинным, цикл завершается, а остальная часть запроса не получает извинения

foreach ($user_email as $key => $email) {
        foreach ($course_assign as $key => $course) {
                $course_details = Course::find($course);
                $topic_data = json_decode($course_details->topic_list);
                for ($i = 0; $i < count($topic_data); $i++) {
                     for ($j = 0; $j < count($topic_data[$i]); $j++) {
                          $topic_name_data [] = $topic_data[$i][$j]->name;
                          $topic_id_data [] = $topic_data[$i][$j]->id;
                     }
                }
                $userCourse = new UserCourse([
                                    //changed from name to id.
                                    'course_id' => $course_details->id,
                                    'course_image' => str_replace('public/', '', $course_details->image),
                                    'qty' => '1',
                                    'price' => $course_details->total_price,
                                    'access_duration' => $course_details->access_duration,
                                    'course_duration' => $course_details->video_duration,
                                    'price' => $course_details->total_price,
                                    'topic_names' => json_encode($topic_name_data),
                                    'topic_ids' => json_encode($topic_id_data),
                                ]);

                 $user = User::find($email);
                 // validation check

                 $check_usercourse_profile_count = DB::table('user_courses')
                                                     ->select('*')
                                                     ->where('course_id',$course_details->id)
                                                     ->where('user_id',$user->id)
                                                     ->count();

                  if($check_usercourse_profile_count==0){

                          $result = $user->usercourse()->save($userCourse);
                          return redirect()->route('admin.user.assign.course')->with('status', 'Course Assigned');
                  } else {
                          $result = $user->usercourse()->save($userCourse)->skip();   
                  }
         }
}

Я хочу ещечасть пропустит их и позволит выполнить все остальные запросы

1 Ответ

0 голосов
/ 27 декабря 2018

я решил проблему

    public function create_user_course(Request $request)
    { 
        $this->validate($request, [
            'select_user_email' => 'required',
            'select_course_assign' => 'required',
        ]);

        $user_email = $request->select_user_email;
        $course_assign = $request->select_course_assign;
                foreach ($user_email as $key => $email) {
                            foreach ($course_assign as $key => $course) {

                                $course_details = Course::find($course);
                                $topic_data = json_decode($course_details->topic_list);
                                for ($i = 0; $i < count($topic_data); $i++) {
                                    for ($j = 0; $j < count($topic_data[$i]); $j++) {
                                        $topic_name_data [] = $topic_data[$i][$j]->name;
                                        $topic_id_data [] = $topic_data[$i][$j]->id;
                                    }
                                }
                                $userCourse = new UserCourse([
                                    'course_id' => $course_details->id,
                                    'course_image' => str_replace('public/', '', $course_details->image),
                                    'qty' => '1',
                                    'price' => $course_details->total_price,
                                    'access_duration' => $course_details->access_duration,
                                    'course_duration' => $course_details->video_duration,
                                    'price' => $course_details->total_price,
                                    'topic_names' => json_encode($topic_name_data),
                                    'topic_ids' => json_encode($topic_id_data),
                                ]);

                                $user = User::find($email);

                                // validation check
                                $check_usercourse_profile_count=DB::table('user_courses')
                                    ->select('*')
                                    ->where('course_id',$course_details->id)
                                    ->where('user_id',$user->id)
                                    ->count();
                                
                                    if($check_usercourse_profile_count==0){
    
                                        $result = $user->usercourse()->save($userCourse);
                                    }
                                    else{
                                        $course = next($course_assign);
                                    }
                                }
                        if($check_usercourse_profile_count==0){

                            $result = $user->usercourse()->save($userCourse);
                        }
                        else{
                            $user = next($user_email);
                        }   
                    }
    if($check_usercourse_profile_count==0){
    return redirect()->route('admin.user.assign.course')->with('status', 'Course Assigned');
    } 
    else{
    return redirect()->route('admin.user.assign.course')->with('status', 'Could not assign Course to some User');
    }  
}

я возвращаю возвращаю полный цикл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...