laravel Нарушение ограничения целостности - PullRequest
0 голосов
/ 29 апреля 2020

Пожалуйста, проверьте правильность обновления моей информации или нет.

error Integrity constraint violation: 1062 Duplicate entry '45' for key 'PRIMARY' (SQL: update `studentdetails` set `SID` = 45, `fname` = sds, `lname` = sad, `dob` = 2020-04-22, `gender` = male, `created_at` = 2020-04-29 11:55:43)" 

Композитный ключ

Стол студенческий подробно

SID pk, 
fname, 
lname, 
dob, 
gender


Таблица студенческого адреса

SID pk,
zipcode pk,
street,
hname,
city,
state,
country


Таблица студенческого набора

SID pk,
grade pk,
edate


Контроллер:

public function update($SID,Request $request)
{

    if(is_numeric($SID))

    {

        $SID = $request->get('SID');
        $fname = $request->get('fname');
        $lname = $request->get('lname');
        $dob = $request->get('dob');
        $gender = $request->get('gender');
        $zipcode = $request->get('zipcode');
        $city = $request->get('city');
        $state = $request->get('state');
        $country = $request->get('country');
        $street = $request->get('street');
        $hname = $request->get('hname');
        $grade = $request->get('grade');
        $edate = $request->get('edate');

        if(is_numeric($SID) && !empty($fname) && !empty($lname) && !empty($dob) && !empty($gender)
        && is_numeric($zipcode) && !empty($city) && !empty($state) && !empty($street) && !empty($hname) && !empty($country)
        && !empty($grade) && !empty($edate))

        {

            DB::table('studentdetails')->update([
                'SID' =>$SID,
                'fname' =>$fname,
                'lname' =>$lname,
                'dob' =>$dob,
                'gender' =>$gender,
                'created_at' =>date('Y-m-d H:i:s'),

            ]);


            DB::table('studentaddress')->update([
                'SID' =>$SID,
                'zipcode' =>$zipcode,
                'city' =>$city,
                'state' =>$state,
                'country' =>$country,
                'street' =>$street,
                'hname' =>$hname,
                'created_at' =>date('Y-m-d H:i:s'),
            ]);

            DB::table('studentenrollment')->update([
                'SID' =>$SID,
                'grade' =>$grade,
                'edate' =>$edate,
                'created_at' =>date('Y-m-d H:i:s'),
            ]);

            return MyResponse::success('ระบบได้บันทึกข้อมูลเรียบร้อยแล้ว','/student');
        }else{
            return MyResponse::error('กรุณาป้อนข้อมูลให้ครบ');
        }
    }

1 Ответ

0 голосов
/ 29 апреля 2020

Изменение логики c .. Вы не можете обновить первичный ключ таблицы .. Вы можете обновить другие столбцы, используя этот первичный ключ .. Это единственное ... В противном случае вы должны сделать SID как не первичный ключ.

public function update($SID,Request $request)
{

    if(is_numeric($SID))

    {

        $SID = $request->get('SID');
        $fname = $request->get('fname');
        $lname = $request->get('lname');
        $dob = $request->get('dob');
        $gender = $request->get('gender');
        $zipcode = $request->get('zipcode');
        $city = $request->get('city');
        $state = $request->get('state');
        $country = $request->get('country');
        $street = $request->get('street');
        $hname = $request->get('hname');
        $grade = $request->get('grade');
        $edate = $request->get('edate');

        if(is_numeric($SID) && !empty($fname) && !empty($lname) && !empty($dob) && !empty($gender)
        && is_numeric($zipcode) && !empty($city) && !empty($state) && !empty($street) && !empty($hname) && !empty($country)
        && !empty($grade) && !empty($edate))

        {
            $studentdetails = DB::table('studentdetails')->where('SID',$SID)->first();

                $studentdetails->fname =$fname;
                $studentdetails->lname = $lname;
                $studentdetails->dob = $dob;
                $studentdetails->gender = $gender;
                $studentdetails->created_at = date('Y-m-d H:i:s');
                $studentdetails->save();
            $studentaddress = DB::table('studentaddress')->where('SID',$SID)->first();

                $studentaddress->zipcode =$zipcode;
                $studentaddress->city = $city;
                $studentaddress->state = $state;
                $studentaddress->country = $country;
                $studentaddress->street  = $street;
                $studentaddress->hname = $hname;
                $studentaddress->created_at = date('Y-m-d H:i:s');
                $studentaddress->save();

            $studentenrollment = DB::table('studentaddress')->where('SID',$SID)->first();

                $studentenrollment->grade = $grade;
                $studentenrollment->edate = $edate;
                $studentenrollment->created_at = date('Y-m-d H:i:s');
                $studentenrollment->save();

            return MyResponse::success('ระบบได้บันทึกข้อมูลเรียบร้อยแล้ว','/student');
        }else{
            return MyResponse::error('กรุณาป้อนข้อมูลให้ครบ');
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...