2015-01-06 8 views
9

मैं यह जांचना चाहता हूं कि श्रेणीबद्ध श्रेणी एक मौजूदा श्रेणी है या नहीं। मैंने लक्ष्य मान के रूप में कई मानों की कोशिश की है, लेकिन मैं इसे अब तक काम नहीं कर सकता।वाईआई 2 मॉडल नियम, अस्तित्व का उपयोग करते समय एक और तालिका का उपयोग कैसे करें?

जब मैं क्वेरी को निष्पादित करता हूं, तो यह जो भी मैं जोड़ने की कोशिश कर रहा हूं उसके लिए सही मान देता है।

public function rules() 
{ 
    return [ 
     [['categoryid'], 'integer'],  
     ['categoryid', 'exist', 'targetAttribute' => FaqCategory::findOne(['id=:id', ['id'=>'categoryid']])['id']], 
     [['question', 'answer'], 'required'], 
     [['answer'], 'string'], 
     [['question'], 'string', 'max' => 255] 
    ]; 
} 
  • अद्यतन

मैं targetClass पर ठोकर खाई। हालांकि इस बार मुझे कक्षा 'FaqCategory' नहीं मिला है। कक्षा एक ही नामस्थान के तहत मिलनी है।

['categoryid', 'exist', 'targetClass' => 'FaqCategory'] 

उत्तर

14

आप नाम स्थान के साथ वर्ग के नाम का उपयोग करने के लिए है, यह होना चाहिए कुछ की तरह:

['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory'] 

या

['categoryid', 'exist', 'targetClass' => FaqCategory::className()] 

http://www.yiiframework.com/doc-2.0/guide-tutorial-core-validators.html#exist

+0

इससे मुझे समस्या ठीक करने में मदद मिली! जवाब पोस्ट किया गया। यकीन नहीं है कि मैं कौन सा शौकीन हूं। कोड नियमों के मामले में एक बेहतर है? – Wijnand

8

soju का जवाब धन्यवाद मिल गया। श्रेणी की आईडी में श्रेणीबद्ध की तुलना करने के लिए लक्ष्य एट्रिब्यूट जोड़ने की आवश्यकता है।

['categoryid', 'exist', 'targetClass' => '\app\models\FaqCategory', 'targetAttribute' => 'id'], 
संबंधित मुद्दे