[arrays] सरणी के लिए Yii मॉडल?


5 Answers

यह करने का सही तरीका है, यह Yii सम्मेलनों का अनुसरण करता है

$trips = Trips::model()->findAll();
$arr = array();
foreach($trips as $t)
{
    $arr[$t->id] = $t->attributes;
}

इसका उपयोग तब किया जाता है जब आपके पास जटिल प्रश्न हैं, जिनसे आपको य्वी सम्मेलनों के साथ बनाना मुश्किल हो जाता है।

Yii::app()->db->createCommand('SELECT * FROM tbl')->queryAll();

उदाहरण के लिए, जब आपको मॉडल से सभी डेटा को किसी सरणी में पास करना होगा। आप इसे सीधे पास नहीं कर सकते क्योंकि यह कुछ ActiveRecord डेटा जानकारी प्रदान करता है जिसे आपको आवश्यकता नहीं है।

Question

मैं Trips::model()->findAll() के परिणाम को कैसे परिवर्तित कर सकता हूं Trips::model()->findAll() को एक सरणी में?




मुझे पूरा यकीन है कि आप यह कर सकते हैं:

$trips = Trips::model()->findAll();
$arr = array();
foreach($trips as $t)
{
    $arr[$t->id] = $t->attributes;
}

मैं मान रहा हूँ कि आपकी विशेषता 'आईडी' आपके मॉडल की प्राथमिक कुंजी के रूप में है




आप इसका उपयोग कर सकते हैं

$Trips::model()->findAll(array('index'=>'trip_id'));
if(count($Trips)>0)
            {                   
                $TripsArrayList=array();
                foreach($Tripsas as $singleTrip)
                {                   
                    $TripsArrayList[]=array('trip_id'=>$singleTrip->trip_id,'name'=>$singleTrip->name);         
                }                   
            }

आपका आउटपुट होगा

Array
    (
      [0] => Array
                 (
                   [trip_id] => 1
                   [name] => Nashik
                 )
      [1] => Array
                 (
                   [trip_id] => 2
                   [name] => Puna
                 ) 
      [2] => Array
                 (
                   [trip_id] => 3
                   [name] => Mumbai
                 ) 
    )



अपने प्रश्न से यह मानते हुए कि आप सभी विशेषताओं चाहते हैं, आपको आईडी द्वारा धोया गया सभी विशेषताओं को देने के लिए एक अधिक कॉम्पैक्ट समाधान, आप CActiveRecord के 'विशेषताएँ' छद्मोपोपचार का निम्न प्रकार से उपयोग कर सकते हैं:

CHtml::listData(Trips::model()->findAll(), 'id', 'attributes')



सरणियों के लिए डीएओ का उपयोग करें

$array = Yii::app()->db->createCommand('SELECT * FROM tbl')->queryAll();



आसान और आसान तरीका: मैं ड्रॉपडाउन मेनू को सरणी बनाने के लिए सूचीडेटा विधि का उपयोग करता हूं , और मुझे लगता है कि यह आपकी सहायता करेगा .. इस उदाहरण की जांच करें:

कोड:

<?php 
     /*you can use here any find method you think 
     proper to return your data from db*/
     $models = Trips::model()->findAll();

     // format models resulting using listData     
     $tripsArray = CHtml::listData($models, 'id', 'name');    

     print_r($tripsArray);
?>

उत्पादन:

array(
 '1'=>'trip1',
 '2'=>'trip2',
 '3'=>'trip3',
)



Related