2013-01-11 10 views
5

मैं कुछ परियोजनाओं के लिए टिप्पणी योग्य मॉडल बनाना चाहता हूं, लेकिन मुझे टिप्पणियां माइग्रेशन स्क्रिप्ट बनाने के लिए कोई संदर्भ नहीं मिल रहा है, मुझे केवल इस वीडियो को vimeo: Laravel 4 - Eloquent Collections & Polymorphic Relations पर मिला है।क्या लार्वा स्कीमा बॉक्स के बाहर बहुलक संघों का प्रबंधन करता है?

क्या मुझे स्पष्ट रूप से पॉलीमोर्फिक कॉलम जोड़ना है?

Schema::create('comments',function($table){ 
    $table->increments('id'); 
    $table->text('body'); 
    $table->string('commentable_type'); 
    $table->integer('commentable_id'); 
    $table->timestamps(); 
}); 

प्रश्न बिल्डर कर प्रोग्रामर एक कुंजी के रूप में $table->foreign('user_id')->references('id')->on('users');

उत्तर

0

बहुरूपी कनेक्शन स्कीमा के साथ कुछ नहीं कर रहे हैं एक विदेशी कुंजी है जब, वे सुवक्ता सुविधा है जो रिश्तों का निर्माण किया जा करने की अनुमति देता हैं उम्मीद के रूप में आता किसी अन्य प्रकार के मॉडल के बीच।

आप इस के दस्तावेज़ देखने कर सकते हैं:

$table->morphs('itemable'); 

बनाता है::

itemable_id 
itemable_type 
table_name_itemable_id_itemable_type_index 

दूसरा वैकल्पिक पैरामीटर

http://four.laravel.com/docs/eloquent#relationships

+2

मैं समझता हूं कि स्कीमा और एलोक्वेंट अलग-अलग अवधारणाएं हैं। मैं सोच रहा था कि क्या पॉलीमोर्फिक कॉलम जोड़ने के लिए शॉर्टकट था, जैसे '$ table-> टाइमस्टैम्प() '। मैं gues कि भंडारण के साथ तर्क मिश्रण मिश्रण होगा। –

+0

दाएं। मैं संरक्षित नहीं हो रहा था, मैं सिर्फ इस तथ्य को मजबूत कर रहा था कि वे जुड़े नहीं हैं। –

+0

स्कीमा कहती है "यहां खेतों हैं"। तत्काल मॉडल तब कहते हैं "इन क्षेत्रों का उपयोग करें"। एक दूसरे के साथ कुछ भी करने के लिए कुछ भी नहीं :) –

6

Laravel ~ 4.1 यह पूरा करने के लिए एक विधि है सूचकांक बहुत लंबा है अगर एक प्रतिस्थापन सूचकांक नाम है। हस्ताक्षर है:

public function morphs($name, $indexName = null); 
+0

धन्यवाद आदमी, परियोजना अवधारणा का सबूत था और मॉडल और रिश्ते इसके बिना लागू करने के लिए पागल हो रहे थे और खरोंच थे :( –

+0

इसे सुनने के लिए खेद है। आप हमेशा polymorphism को लागू कर सकते हैं एक स्ट्रिंग कॉलम "something_type" और एक हस्ताक्षरित (incrementing) पूर्णांक कॉलम "something_id" निर्दिष्ट करके केवल Laravel। – andrewhl

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