arrays - Yii2 में find(सभी) का उपयोग कैसे करें?



multidimensional-array yii2-advanced-app (2)

$students_ids = Yii::$app->request->post('studentIds');
if(isset($students_ids)) {
     $result = Users::find()->where(['in','id',$students_ids])->all();
}

var_dump($result)

इस तरह की कोशिश करो

https://ffff65535.com

मैं जानना चाहता हूं कि मैं where हालत के लिए सरणी आईडी के साथ user सभी डेटा प्राप्त कर सकता हूं

yii आप ऐसा कुछ कर सकते हैं

$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");

या

$userDtls = Student::model ()->findAllByAttributes ( array (
                    'id' => explode ( ",", $_POST ['studentIds'] ) 
            ) );

अब yii2 CDbCriteria में नहीं है, इसलिए मुझे एक ही चीज़ प्राप्त करने के लिए कौन सी दृष्टिकोण का उपयोग करना चाहिए ??

मैंने यह कोशिश की है लेकिन यह केवल सरणी में पहले आईडी के लिए डेटा देता है

$result = Users::findAll([ 'id'=> $_POST ['keylist']]);

दस्तावेज़ीकरण में लिखा है कि हम इसका उपयोग कर सकते हैं

$result = Users::findAll([1,488,489]);

लेकिन मेरी सरणी $_POST['keylist'] ऐसा कुछ है

keylist{
   0='1'
   1='5'
   2='8'
}

मैंने यह भी कोशिश की है

$ids = \Yii::$app->request->post('keylist', []);

$result = Users::findAll($ids);

और फिर भी सरणी में पहले आईडी का डेटा यहां देता है स्क्रीनशॉट है

यही वजह है कि मुझे लगता है कि यह काम करता है

धन्यवाद


$users = Users::findAll($ids); एक सही दृष्टिकोण है

देखें कि आप आधिकारिक दस्तावेज़ों में $ids में क्या पास कर सकते हैं

जैसा कि मैंने आपको यहां समझाया है , आपको $_POST से डेटा पर भरोसा नहीं करना चाहिए और इसका इस्तेमाल करने से पहले उसे अस्तित्व के लिए जांचना और मान्य करना चाहिए।

Yii2 के साथ अस्तित्व पाने और जांचने का उदाहरण:

$ids = \Yii::$app->request->post('ids');

या केवल:

$ids = isset($_POST['ids']) ? $_POST['ids'] : null;

अधिक जटिल मामलों के लिए मैं अलग खोज मॉडल बनाने और इसे सत्यापन के साथ प्रयोग करने की सलाह देता हूं, उदाहरण के लिए जीआईआईआर सीआरयूडी देखें।

अद्यतन करें: ध्यान दें कि आप वास्तव में $ids रूप में क्यों पास होते हैं





yii2-advanced-app