2015-05-28 7 views
13

मैं एक पॉलिमॉर्फिक एसोसिएशन बनाने की कोशिश करता हूं, रेल में आम क्या है लेकिन दुर्भाग्य से वाईआई 2 में नहीं। क्योंकि 'व्यक्ति' वर्तमान मॉडल की विशेषता के रूप में व्यवहार किया जातावाईआई 2 में ऑन कंडीशन में स्थिरता का उपयोग कैसे करें कई संबंध

public function getImages() 
{ 
    return $this->hasMany(RecipeImage::className(), 
     ['imageable_id' => 'id', 'imageable_type' => 'Person']); 
} 

लेकिन यह काम नहीं करता है, लेकिन यह के लिए एक निरंतर (वर्ग नाम है: कार्यान्वयन के हिस्से के रूप मैं संबंध परिभाषित करने की जरूरत पॉलिमॉर्फिक एसोसिएशन)।

यदि मैं 'और कहां' का उपयोग करने का प्रयास करता हूं तो यह ऑन क्लॉज के बजाय WHERE क्लॉज में पाठ्यक्रम की स्थिति को जोड़ता है, जिसके कारण केवल मौजूदा छवि के साथ रिकॉर्ड लौटाते हैं।

public function getImages() 
{ 
    return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])-> 
     andWhere(['imageable_type' => 'Ingredient']); 
} 

मैं संबंध को कैसे परिभाषित कर सकता हूं? कोई और एक विधि नहीं है।

उत्तर

37

इस मामले आप andOnCondition विधि के साथ इस शर्त पर संशोधित कर सकते हैं में:

public function getImages() 
{ 
    return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id']) 
     ->andOnCondition(['imageable_type' => 'Person']); 
} 

सरकारी डॉक्स: लिंक के लिए

+1

धन्यवाद! – iGbanam

संबंधित मुद्दे