2015-12-23 10 views
7

मैं अब 12 साल के लिए एक PHP प्रोग्रामर हूं, और कई बार कई बार फिर से आविष्कार किया, हमारे बंद स्रोत वेब-ऐप के लिए अपना खुद का ढांचा तैयार करना, जिसे एक साझा डेटाबेस के रूप में पेश किया गया एक होस्टेड समाधान के रूप में पेश किया जाता है सभी ग्राहकों के लिए।लारवेल बिना बोलने वाले और डेटाबेस माइग्रेशन के?

अब मैं लैरवेल 5 का प्रयास कर रहा हूं और देखा है कि लगभग हर उदाहरण वालोकेंट और डेटाबेस माइग्रेशन का उपयोग करता है। मेरे लिए ऐसा लगता है कि इस तरह की चीजें सरल डेटाबेस और उन लोगों को लक्षित करती हैं जो एसक्यूएल या डेटाबेस-डिज़ाइन पसंद नहीं करते हैं (लेकिन मैं गलत हो सकता हूं)।

हमारे MySQL डेटाबेस में 100+ टेबल, कई संग्रहीत प्रक्रियाएं और कई ट्रिगर्स हैं जिन्हें मैं ओआरएम में करने की कल्पना नहीं कर सकता। हम डेटाबेस-डिज़ाइन के लिए Navicat का उपयोग करते हैं और SQL-query का परीक्षण करते हैं। डेटाबेस को ऐप के एक नए संस्करण में अपग्रेड करने के लिए, हमने पहले ही कुछ अच्छी स्क्रिप्ट और यहां तक ​​कि विजुअल टूल्स भी लिखे हैं।

तो मूल रूप से मेरा सवाल यह है कि यदि लैरावेल वास्तव में एलोक्वेंट और माइग्रेशन के साथ उपयोग किया जाता है या मैं वास्तव में उनके बिना बहुत सारी कार्यक्षमता खो रहा हूं।

आप क्या सलाह देते हैं?

+0

क्षमा करें और टिया; यह अप्रासंगिक है, क्या आपने mysql डीबी और ui पर extjs के साथ सिद्धांत के साथ codeignighter कोशिश की है? यह एक बेहतर फिट हो सकता है। – unixmiah

+0

यदि आप वाक्प्रचार का उपयोग नहीं करना चाहते हैं तो मुझे यह निर्भर करता है लेकिन मुझे लगता है कि माइग्रेशन अच्छा है। – Ceeee

+0

कभी भी कोडिनेटर की कोशिश नहीं की, लेकिन मैं वास्तव में लैरावेल का उपयोग करना चाहता हूं, क्योंकि आजकल यह सबसे अधिक इस्तेमाल किया जाने वाला ढांचा लगता है। हम अब अपने स्वयं के AJAX ढांचे का उपयोग करते हैं, लेकिन AngularJS या EmberJS का उपयोग शुरू करने की योजना बना रहे हैं। – Dylan

उत्तर

3

इसका आप तक,

Laravel प्रवास डेटाबेस संस्करण (संस्करण नियंत्रक का उपयोग करते समय) रखने भी वाक्पटु कई तरह जटिल परिस्थितियों के लिए तालिकाओं के बीच सरल संबंध मानचित्रण के लिए उद्देश्य से है जुड़ें और की वजह से अपने सभी की सिफारिश नहीं करने के लिए उद्देश्य से है प्रदर्शन समस्या तब आप Query Builder चुन सकते हैं, यह बेहतर प्रदर्शन देता है, आपको लार्वेल उपयोग \DB::statement();

लार्वेल एंगुलर जेएस के लिए एकदम सही मैच है, और अधिक लारवेल कुछ अच्छे PHP घटकों का एक आवरण है तेजी से परिणाम प्रदान करने में सक्षम।

आशा है कि यह मदद करता है ..

1

एक ORM का उपयोग करते हुए अपने जीवन के रूप में सबसे आम स्थिति में पहले से ही शामिल किया जाता है सरल करता है। डेटा प्राप्त करना, संबंधों का प्रबंधन करना और उत्सुक/आलसी लोडिंग एक हवा है। यह आपको किसी भी इंजेक्शन भेद्यता से भी बचाता है जो आप अपने हार्डकोडेड प्रश्न लिखते समय बना सकते हैं। बेशक सभी परिदृश्यों को ओआरएम द्वारा नियंत्रित नहीं किया जा सकता है, इसलिए रॉ प्रश्न लिखने की संभावना है। आप ALTER या SET की तो आप DB::Statement उपयोग कर सकते हैं जैसी बातों पर अमल करना चाहते हैं

$results = DB::select(DB::raw("SELECT * FROM users WHERE username = :username"), ['username' => 'johndoe']);

: Laravel का उपयोग करना Query Builder आप कुछ इस तरह कर सकता है।

तो बस ध्यान दें, Eloquent लैरवेल का ओआरएम है जबकि Query Builder आपकी क्वेरी को सुरक्षित तरीके से बनाने के लिए परत है।

तो एलोक्वेन्ट का उपयोग करना है या नहीं, मेरा मानना ​​है कि उन्होंने ठोस ओआरएम के साथ अच्छा प्रदर्शन किया है लेकिन आप हमेशा एक और ओआरएम जैसे सिद्धांत, डेटा मैपर इत्यादि को लागू करने के लिए स्वतंत्र हैं। उनमें से ज्यादातर के लिए बाइंडिंग।

संपादित करें: उल्लेख के लायक भी है कि सुवक्ता मॉडल, कुछ आसान अतिरिक्त के भी बातें सरल करता है कि प्रदान करता है एक JSON __toString, संरक्षित गुण, तारीख कास्टिंग, आदि परिवर्तित जब एक से अधिक मॉडल को लाते समय वे एक में संग्रहीत किया जाएगा की तरह Collection, एक Arrayable जो खुश समय के लिए और भी अधिक तरीके प्रदान करता है।इसे देखें: http://laravel.com/docs/5.1/eloquent-collections

1

यदि आप चाहें तो लार्वेल में सरल SQL क्वेरी चला सकते हैं, लेकिन वास्तव में अधिकांश उदाहरण Eloquent का उपयोग कर रहे हैं।

मैं 100 से अधिक तालिकाओं के साथ प्रोजेक्ट कर रहा हूं और ज्यादातर मामलों में कच्चे एसक्यूएल प्रश्नों को हर बार डालने के बजाए एलोक्वेंट का उपयोग करना संभव है लेकिन यह मेरी प्राथमिकता है।

हालांकि आपने उल्लेख किया है कि आपके पास डेटाबेस में कई संग्रहीत प्रक्रियाएं और ट्रिगर्स हैं। ईमानदार होने के लिए आपको उस पर पुनर्विचार करना चाहिए क्योंकि अब आप डेटाबेस में अधिक व्यावसायिक तर्क डाल सकते हैं और आपका तर्क डेटाबेस और एप्लिकेशन दोनों में है।

मैंने कुछ महीने पहले एमएसएसक्यूएल में ऐसे डेटाबेस को देखा और यह भयानक था - कोई भी वास्तव में नहीं जानता था कि क्या हो रहा है और जब आप इस डेटाबेस को MySQL और Laravel एप्लिकेशन में माइग्रेट करना चाहते थे तो यह एक बड़ी समस्या थी क्योंकि इसमें बहुत अधिक तर्क था डेटाबेस (मैंने इस प्रोजेक्ट में हिस्सा नहीं लिया है केवल इसे देखा है)

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