سؤال

أنا أكتب اختبار وحدة في CakePHP 1.3 عبر SimpleTest.

أقوم بتشغيل الكود التالي، وهو يعمل (يتم إنشاؤه كما هو متوقع)

$this->testAction('/post/add/user:'. $userId, array('method' => 'post'));

أحتاج إلى العثور على معرف هذا المنشور المضاف لاستخدامه في الاختبارين التاليين - تحرير المنشور وحذف المنشور.لقد حاولت الرجوع من خلال النموذج (أي.$Post->id، $this->Post->id) ولكن يبدو أن المرور عبر testAction لا يعمل بنفس الطريقة.

أدرك أيضًا أنه يمكنني الاستعلام للعثور على max(id)، ولكن بعد ذلك إذا كان هناك مستخدم آخر في نظام الاختبار يقوم بإدراج منشور جديد على بالكاد وفي الوقت نفسه، يمكن أن يفسد النتائج (على الأقل بقدر ما أعرف - صححني إذا كنت مخطئًا).

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

المحلول

عادة، من وحدة تحكم يجب عليك استخدامها

$this->Post->getLastInsertID();

هذا عبارة عن غلاف لطرق الموصلات.

$this->Post->id 

يتم استخدامه لتعيين معرف ثم استرداد البيانات أو تعيينها.

نصائح أخرى

لم أستخدم cakephp من قبل، ولكن مع mysql وmysqli يمكنك الحصول على آخر معرف تم إدراجه بما يلي:

mysql_insert_id(), ، و $mysqli->insert_id على التوالى.

http://php.net/manual/en/function.mysql-insert-id.php

http://php.net/manual/en/mysqli.insert-id.php

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