kohanav3 orm: الاتصال أين-> find_all مرتين
-
26-09-2019 - |
سؤال
عندما أفعل شيئًا مثل ما يلي:
$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>
شرط.
لا تنتمي إلى StackOverflow