2015-06-29 10 views
11

क्या ActiveRecord को Yii2 में किसी सरणी में परिवर्तित करने का कोई तरीका है? मुझे पता है कि हम ActiveQuery के लिए ऐसा कर सकते हैं, उदाहरण के लिए उपयोगकर्ता :: ढूंढें() -> asArray() -> एक(); लेकिन क्या हम पहले ही लाए जाने पर मॉडल को ऐरे में परिवर्तित कर सकते हैं? मैं इसे पहले सेव करना चाहता हूं और उस सरणी को कैश करने के लिए स्टोर करता हूं। धन्यवाद।Yii2 - ActiveRecord से Array

उत्तर

28

Yii2 Guide उपयोग से arrayHelper

$posts = Post::find()->limit(10)->all(); 
    $data = ArrayHelper::toArray($posts, [ 
     'app\models\Post' => [ 
      'id', 
      'title', 
      // the key name in array result => property name 
      'createTime' => 'created_at', 
      // the key name in array result => anonymous function 
      'length' => function ($post) { 
       return strlen($post->content); 
      }, 
     ], 
    ]); 
+0

फिर एसीप्टेड – scaisEdge

+0

वाह के रूप में उत्तर और चिह्न को रेट करें! मैंने 'toArray' का उपयोग करने का एक नया तरीका सीखा, धन्यवाद! – realtebo

+2

मैं यह जोड़ना चाहता हूं कि ActiveRecord में एक कार्य 'toArray()' है, इसलिए '$ model-> toArray() 'भी एक मॉडल को परिवर्तित करने के बाद परिवर्तित करने के लिए काम करेगा। –

21

इस कोशिश करो!

$model = Post::find($id)->limit(10)->asArray()->all(); 
$model = Post::find($id)->select('id,name as full')->asArray()->one(); 
$model = Post::find($id)->select('id,name as full')->asArray()->all(); 
$model = Post::find()->where(['slug'=>$slug])->asArray()->one(); 
+0

यह एक और yii2 तरीका – sasori

+0

है यह बहुत बेहतर है ... –

+0

यह उत्तर है कहीं अधिक इष्टतम – dzona