سؤال

عندما أفعل شيئًا مثل ما يلي:

$site = ORM::factory('site')->where('name', '=', 'Test Site')->find();
$users = $site->users;
$deletedusers = $users->where('deleted', '=', '1')->find_all();
$nondeletedusers = $users->where('deleted', '=', '0')->find_all();

محتويات $ deletedusers صحيحة ، ولكن يحتوي $ nondeletedusers على كل مستخدم غير محضر ، وليس فقط تلك الموجودة في موقع $ المحمّل.

ما الخطأ الذي افعله؟

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

المحلول

بسبب find_all() و find() ستعمل الأساليب على إعادة ضبط حالة النموذج الخاصة بك. علي سبيل المثال، $user لديه where('site_id', '=', <site_id>) الشرط (تم تطبيقه في السطر رقم 1 من الكود الخاص بك). عندما تتصل find_all(), orm إعادة ضبط جميع الظروف ، لذلك $nondeletedusers يعمل مع نموذج فارغ.

لتجنب هذا السلوك ، يمكنك محاولة ذلك clone مستخدمون $ ، أو استرداد جميع معرفات المستخدمين من $user و أضف AND WHERE id IN <id list> شرط.

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