سؤال

مرحبًا ، أنا أستخدم CakePhP 1.3 وأنا غير قادر على إعادة إعادة عرض معرف الصف الأخير. أنا في الواقع أستخدم $ this-> model-> معرف لاستئناف آخر معرف تم إدراجه ، لكنني غير قادر على الحصول على المعرف. عندما تحاول التحقق من نوع الإرجاع ، فإنه يقول باسم Bool (False) ، مما يعني أنه لا يتم إرجاع أي شيء.

أنا هنا أقوم بتحميل نموذج مختلف في وحدة تحكم مختلفة ، فهل ستكون هذه هي المشكلة؟ ولكن على الرغم من أنني أحمل ، إلا أنني أعود شيئًا !!

$this->loadModel('Contact');
$this->Contact->query("insert into contacts(tblContact_firstName,tblContact_lastName,tblContact_company,tblContact_department,tblContact_address,tblContact_country,tblContact_city,tblContact_state,tblContact_zipcode,tblContact_phone1,tblContact_email1) values('$sanitizedFormData[fname]','$sanitizedFormData[lname]','','$sanitizedFormData[company]','$sanitizedFormData[address]','$sanitizedFormData[country]','$sanitizedFormData[city]','$sanitizedFormData[state]','$sanitizedFormData[zip]','$sanitizedFormData[phone]','$sanitizedFormData[email]');");

$this->loadModel('Contact');
$contactId = $this->Contact->id;

وعندما قمت بطباعة صفيف الاتصال $ this-> بشكل متكرر ، وجدت قيمة مفتاح "ID" فارغ. وهذا ما يفسر لماذا كنت أتلقى قيمة فارغة.

الآن بالنظر إلى وضعي ، كيف يمكنني الحصول على آخر معرف تم إدراجه ، خاص بجهة اتصال وحدة التحكم؟

هل كانت مفيدة؟

المحلول

عندما تستخدم query() يمكنك أن تفقد الكثير من CakePhP الآلي. يستخدم save() في حين أن.

في الواقع ، لا تحتاج حتى إلى تحميل الاتصال في هذه الحالة. يمكنك تنفيذ أي استعلام من وحدة التحكم الحالية مع query() حتى الادخار لأي جدول آخر.

يمكنك أيضًا تجنب استخدام loadModel() إذا كان نموذجك الحالي مرتبطًا بطريقة أو بأخرى بالاتصال ($this->CurrentModel->AnotherOne->Contact->save(...)).

نصائح أخرى

أعتقد أنك تريد فقط أن تفعل:

$this->getLastInsertID();

http://book.cakephp.org/2.0/en/models/addition-methods-and-properties.html#model-getlastinsertid

إذا كان هذا هو MySQL ، فيمكنك استخدام "SELECT From Conslists Last_Insert_ID ()" للحصول على معرف آخر. أو فقط "حدد last_insert_id ()"

بالنسبة إلى MSSQL ، فهو "SELECTION @Identity".

هذا يتجاوز أي حل في CakePhP ، لذلك قد يكون هناك حل أفضل.

يمكنك الحصول last inserted record id بواسطة

echo $this->ModelName->getLastInsertID();

بالتناوب ، يمكنك استخدام:

echo $this->ModelName->getInsertID();

يمكن العثور على هذه الطرق في الكيك/libs/model/model.php على الخط 2775

ملحوظة: هذه الوظيفة لا تعمل إذا قمت بتشغيل استعلام إدراج يدويًا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top