2014-09-10 7 views
8

मैं चारों ओर खोज कर रहा हूं और सवाल कुछ बार पूछा गया था, लेकिन कोई भी इसका एक निश्चित उत्तर देने में सक्षम नहीं प्रतीत होता है। स्कीमा का उपयोग करके तालिका कॉलम के लिए आप पूर्णांक लंबाई कैसे निर्दिष्ट करते हैं?स्कीमा बिल्डर की लंबाई एक पूर्णांक

मैं किसी को सुझाव दे देखा है:

$table->integer('post')->length(11); 

लेकिन वह काम नहीं करता - कम से कम Laravel 4.2 के साथ - यह अभी भी int(10) के रूप में स्तंभ पैदा करता है।

क्या पूर्णांक लंबाई निर्दिष्ट करने के लिए कोई अंतर्निहित विधि है?

+1

क्या यह टेबल के बीच विदेशी कुंजी बनाने से संबंधित किसी भी मौके से है? – jeteon

उत्तर

15

यदि आप MySQL का उपयोग कर रहे हैं, तो आप एक पूर्णांक कॉलम की लंबाई निर्दिष्ट नहीं कर सकते हैं। आप केवल http://dev.mysql.com/doc/refman/5.1/en/integer-types.html पर वर्णित उपलब्ध पूर्णांक प्रकारों में से एक के बीच चयन कर सकते हैं।

इसलिए, आप या तो लैरवेल में पूर्णांक लंबाई सेट नहीं कर सकते हैं। आप केवल http://laravel.com/docs/schema#adding-columns पर वर्णित उपलब्ध प्रकारों में से एक चुन सकते हैं।

+2

लेकिन MySQL की पूर्णांक लंबाई 11 तक बढ़ जाती है - 10 नहीं, जो डिफ़ॉल्ट रूप से प्रतीत होती है? TINYINT के लिए वही है जो 4 आदि तक जाता है –

+11

यह हस्ताक्षरित पूर्णांक के लिए 11 तक चला जाता है। हस्ताक्षरित पूर्णांक के लिए (और फिर मेरा मतलब 'INT' प्रकार) है, यह 10 तक जाता है। – lowerends

+1

समझ में आता है - धन्यवाद, हालांकि यह एक शर्म की बात है कि आप लंबाई निर्दिष्ट नहीं कर सकते - यह कुछ परिदृश्यों में उपयोगी हो सकता है। –

0

सोचा कि मैं सामान्य परिस्थितियों तालिका के लिए एक आसान-प्रति-प्रति-पेस्ट तैयार करूंगा।
हस्ताक्षर अगर आप ऋणात्मक मानों की आवश्यकता होती है और अहस्ताक्षरित अगर आप नहीं है।

 
| Type    | Eloquent (Schema Builder)     | Min  | Max | 
| ------------------- | ----------------------------------------- | ------- | ------ | 
| TINYINT (Signed) | $table->signedTinyInteger('foo')   | -128 | 127 | 
| TINYINT (Unsigned) | $table->unsignedTinyInteger('foo')  | 0  | 255 | 
| SMALLINT (Signed) | $table->signedSmallInteger('foo')   | -32768 | 32767 | 
| SMALLINT (Unsigned) | $table->unsignedSmallInteger('foo')  | 0  | 65535 | 

बड़ा पूर्णांक प्रकार के लिए देखें: https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

1

मुझे लगता है कि आप (जब विदेशी कुंजी घोषित) एक वेतन वृद्धि आईडी से मेल करने के लिए 10 की लंबाई निर्दिष्ट करना चाहते हैं अनुमान लगा रहा हूँ। यदि ऐसा है तो आपको इसका उपयोग करना होगा:

$table->unsignedInteger('some_id_reference'); 
संबंधित मुद्दे