как сохранить значения первичного ключа во внешнем ключе одновременно с сохранением - PullRequest
0 голосов
/ 31 мая 2019

Я новичок в Laravel и пытаюсь сохранить значения первичного ключа значения patientid для внешнего ключа из patient_id в таблице адресов

$patdet = $request->patdet;

foreach ($patdet as $patdets) {
    $pdet = new Patient();

    $pdet->fname = $patdets['fname'];
    $pdet->mname = $patdets['mname'];
    $pdet->lname = $patdets['lname'];
    $pdet->age = $patdets['age'];
    $pdet->blood_group = $patdets['bloodgroup'];
    $pdet->gender = $patdets['gender'];
    $ptid = $pdet->save();
}

$addr = $request->address[0];
$address = new Address;
$address->gps_lat = $addr['gps_lat'];
$address->gps_log = $addr['gps_long'];
$address->house_no = $addr['houseno'];
$address->zipcode = $addr['zip_code'];
$address->street = $addr['street'];
$address->chowk = $addr['chowk'];
$address->city = $addr['city'];
$address->patient_id = $patid->id;
$address->save();

Я знаю, что $ptid является локальной переменной и не может использоваться в таблице адресов, так как я могу сохранить ее в таблице адресов?

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Попробуйте следующее и спросите меня, не работает ли оно

foreach($request->patdet as $key => $patdets)
{
    $pdet = new Patient();

    $pdet->fname = $patdets['fname'];
    $pdet->mname =  $patdets['mname'];
    $pdet->lname =  $patdets['lname'];
    $pdet->age   =  $patdets['age'];
    $pdet->blood_group = $patdets['bloodgroup'];
    $pdet->gender  = $patdets['gender'];
    $pdet->save();
    $addr = $request->address[$key];
    if($pdet->id > 0 && !empty($addr)){
        $addrss = new Address;
        $addrss->gps_lat = $addr['gps_lat'];
        $addrss->gps_log = $addr['gps_long'];
        $addrss->house_no  = $addr['houseno'];
        $addrss->zipcode    =  $addr['zip_code'];
        $addrss->street    = $addr['street'];
        $addrss->chowk  = $addr['chowk'];
        $addrss->city   = $addr['city'];
        $addrss->patient_id = $pdet->id;
        $addrss->save();
    }
}
1 голос
/ 31 мая 2019

Попробуйте следующее

    $patArray = $request->patdet;
    $addressArray = $request->address;
    $pId = array();
    foreach($patArray as $key => $patdets){
        $pdet = new Patient();
        $pdet->fname = $patdets['fname'];
        $pdet->mname =  $patdets['mname'];
        $pdet->lname =  $patdets['lname'];
        $pdet->age   =  $patdets['age'];
        $pdet->blood_group = $patdets['bloodgroup'];
        $pdet->gender  = $patdets['gender'];
        $pdet->save();
        $pId[$key] = ($pdet->id > 0) ? $pdet->id : 0;
    }
    foreach($addressArray as $key => $addr){
        $addrss = new Address;
        $addrss->gps_lat = $addr['gps_lat'];
        $addrss->gps_log = $addr['gps_long'];
        $addrss->house_no  = $addr['houseno'];
        $addrss->zipcode    =  $addr['zip_code'];
        $addrss->street    = $addr['street'];
        $addrss->chowk  = $addr['chowk'];
        $addrss->city   = $addr['city'];
        $addrss->patient_id = array_key_exists($key ,$pId) ? $pId[$key] : 0;
        $addrss->save();
        $i++;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...