2009-07-30 10 views
6

alias और name केक मॉडल में दोनों गुण हैं। वे समान दिखते हैं, लेकिन चूंकि उनमें से दोनों मौजूद हैं, वहां एक अंतर होना चाहिए। यह क्या है?केकपीएचपी में मॉडल-> ऊर्फ और मॉडल-> नाम के बीच क्या अंतर है?

उत्तर

5

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

उदाहरण के लिए:

$hasMany = array('UserNew' => array('className' => 'User')); 

उस मामले में, आप मॉडल है कि वास्तव में उपयोगकर्ता कहा जाता है का उपयोग कर रहे हैं, लेकिन आप 'UserNew' के रूप में यह संदर्भित कर रहे हैं।

+1

$ हैनी = सरणी ('मित्र' => सरणी ('className' => 'उपयोगकर्ता')); एक बेहतर उदाहरण होगा, लेकिन आप सही हैं। :) इस वजह से, आप जहां संभव हो वहां 'उर्फ' का उपयोग करना चाहते हैं, क्योंकि आप कभी भी यह सुनिश्चित नहीं कर सकते कि 'नाम' वास्तव में वह वस्तु है जिसे आप सोचते हैं कि आप इससे निपट रहे हैं। – deizel

0

यह केक में शामिल होने पर उपयोग किए जाने वाले टेबल उपनामों का संग्रह है। cake/lib/model/model_php5.php से:

/** 
* Alias table names for model, for use in SQL JOIN statements. 
* 
* @var array 
* @access public 
*/ 
    var $alias = array(); 
0

आप अस्थायी रूप से एक मॉडल में तालिका बदलना चाहते हैं, और आप से, $ इस- बदलने> उर्फ ​​CakePHP जादू अधिभावी रहे हैं कि आप क्या चाहते करने के लिए यह कहा जाता है। $ this-> नाम का उपयोग कन्स्ट्रक्टर में किया जाता है और उस प्रक्रिया में कहीं भी उपनाम बनाना चाहिए। इस विधि को बदलना-> उस विधि में नाम जिसे आप ओवरराइड करना चाहते हैं, पर्याप्त नहीं है। आप() नीचे के रूप में $ this-> उर्फ ​​बदल सकते हैं और विधि setSource प्रदर्शन करना होगा:

function my_override_method(){ 
    $this->setSource('new_db_table_name_here'); 
    $this->alias = "NewTable"; 
} 
0
  • name: मॉडल का नाम, उदाहरण के Post के लिए।
  • alias: मॉडल के उपनाम, उदाहरण के लिए ClassRegistry में उदाहरण दर्ज करने के लिए इसका उपयोग किया जाता है, उदाहरण के लिए ParentThread

Model::__construct()

this सवाल भी पर एक नजर डालें।

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