मैं लार्वा मार्गों के बारे में थोड़ा भ्रमित हूं और यह कैसे किया जाना चाहिए।

मेरे पास दो मॉडल हैं:

Customer
CustomerAddress

संबंध वैसे ही हैं जैसे कोई उम्मीद करेगा:

Customer hasMany CustomerAddress
CustomerAddress belongsTo Customer

मेरे रूट फ़ाइल में मेरे पास यह ग्राहक के लिए है जो पूरी तरह से काम कर रहा है:

Route::get('/admin/customers', 'Admin\CustomersController@index')->name('admin.customers.index');
Route::get('/admin/customers/create', 'Admin\CustomersController@create')->name('admin.customers.create');
Route::post('/admin/customers', 'Admin\CustomersController@store')->name('admin.customers.store');
Route::get('/admin/customers/{customer}', 'Admin\CustomersController@show')->name('admin.customers.show');
Route::get('/admin/customers/{customer}/edit', 'Admin\CustomersController@edit')->name('admin.customers.edit');
Route::patch('/admin/customers/{customer}', 'Admin\CustomersController@update')->name('admin.customers.update');
Route::delete('/admin/customers/{customer}', 'Admin\CustomersController@destroy')->name('admin.customers.destroy');

(मुझे पता है कि मैं संसाधन मार्ग का उपयोग कर सकता हूं लेकिन मुझे यह दस्तावेज उपलब्ध मार्गों को पसंद है)

ग्राहकों के पते के लिए मैं कुछ इस तरह का उपयोग करने में सक्षम होना चाहता हूं:

Route::get('/admin/customers/addresses', 'Admin\CustomersAddressesController@index')->name('admin.customers.addresses.index');

यह पहले काम नहीं कर रहा था और 404 लौटा रहा था, लेकिन मुझे अंततः समझ में आया कि ऐसा इसलिए था क्योंकि यह "पता" भाग ले रहा था और डेटाबेस खोज रहा था और चूंकि कोई वैध ग्राहक नहीं था, इसने मुझे 404 लौटा दिया। मैंने इसे ठीक किया इसे ग्राहकों के मार्गों से पहले ले जाना। क्या यह करने का यह सही तरीका है?

मैं उपयोगकर्ता आईडी द्वारा पतों को कुछ इस तरह से फ़िल्टर करने में सक्षम होना चाहूंगा:

Route::get('/admin/customers/{customer}/addresses', 'Admin\CustomersAddressesController@index')->name('admin.customers.addresses.index');

और केवल विशिष्ट ग्राहक पते लौटाएं लेकिन मुझे यकीन नहीं है कि यह कैसे किया जाना चाहिए।

मॉडलों के नामकरण के संबंध में, मेरे पास दो माइग्रेशन हैं, एक ग्राहक नाम की तालिका के लिए, इसलिए ग्राहक मॉडल और दूसरा ग्राहक_एड्रेस नामक तालिका के लिए, इसलिए ग्राहक पता मॉडल।

क्या ऐसा ही किया जाना चाहिए?

यह थोड़ा अजीब लगता है कि दोनों मॉडल नाम में ग्राहक हैं, लेकिन चूंकि टेबल इस तरह हैं, यही मैंने किया है। क्या मुझे मॉडल के नाम को सिर्फ ग्राहक और पते में बदलना चाहिए?

क्या मुझे ग्राहकों और ग्राहकों_पते के बजाय टेबल के नाम को ग्राहकों और पतों में बदलना चाहिए?

वही उन नियंत्रकों पर लागू होता है जिन्हें वर्तमान में CustomersController और CustomerAddressesController नाम दिया गया है।

इसके लिए सही नाम संरचना क्या है?

मुझे पता है कि यह बहुत कुछ है लेकिन मैं वास्तव में इसके बारे में उलझन में हूं और मैं इसे सही तरीके से करना चाहता हूं। शुक्रिया!

0
Edd 25 फरवरी 2020, 04:44

2 जवाब

सबसे पहले, नामकरण परंपरा के संबंध में, आप सही हैं। नामकरण थोड़ा अजीब और लंबा लग सकता है, लेकिन डेटाबेस प्रशासनिक सम्मेलनों का पालन करते हुए, आपको उन तालिकाओं और स्तंभों का नाम देना होगा जो वे प्रतिनिधित्व करते हैं (1NF, पहला सामान्य रूप डेटाबेस नियम)।
हमें इसकी आवश्यकता है हमेशा एक ऐसा एप्लिकेशन बनाने और बनाने का प्रयास करें जो स्केलेबल हो। यदि आप Customer_addresses के तालिका नाम को केवल पते में बदलने का निर्णय लेते हैं, तो यह भविष्य में एक संघर्ष का कारण बन सकता है जब आप ग्राहक सेवा, विक्रेता, आदि जैसी विभिन्न भूमिकाएँ जोड़ने का इरादा रखते हैं। यदि आप उनके पते को अलग-अलग तालिकाओं में रखने का इरादा रखते हैं। विशिष्ट कारण, संभवत: एक निश्चित भूमिका के उपयोगकर्ता के लिए पतों के परिणाम एकत्र करने के लिए आवश्यक प्रश्नों और खोज की संख्या को कम करने के लिए, यदि आप ग्राहक_पता तालिका का नाम बदलकर केवल पतों पर करने का निर्णय लेते हैं, तो आपको एक नामकरण विरोध का सामना करना पड़ेगा।
ध्यान दें सिवाय इसके कि आप उस तालिका में सभी पते एकत्र करना चाहते हैं (जिसकी अनुशंसा नहीं की जाती है) तो आप ऐसा कर सकते हैं। साथ ही, एक उपयोगकर्ता की एक से अधिक भूमिकाएँ हो सकती हैं, वह अलग-अलग पतों का उपयोग करने का इरादा कर सकता है, इसलिए हो सकता है कि आप उन्हें उनकी विशिष्ट तालिकाओं में संग्रहीत करना चाहें

मार्ग के लिए, मुझे लगता है कि ग्राहक पते प्राप्त करते समय आप यूआरएल से ग्राहक विवरण छिपाने की कोशिश कर रहे हैं, आप एन्क्रिप्ट करके ऐसा कर सकते हैं।
आपको इसका उपयोग करना चाहिए।

Route::get('/admin/customers/addresses/{customer}', 'Admin\CustomersAddressesController@index')->name('admin.customers.addresses.index');

लेकिन Crypt::encrypt का उपयोग करके एन्क्रिप्ट करें। आपका प्राप्त लिंक कुछ इस तरह हो सकता है

<a  href="{{route('/admin/customers/addresses',['customer' => Crypt::encrypt(customer_id) ])}}">Customers Address</a>


आपका नियंत्रक

public function getCustomerAddress($customer){    
    $customer_id = Crypt::decrypt($customer);    
    //then your action      
}

यह url के माध्यम से एक एन्क्रिप्टेड पैरामीटर भेजेगा। मैं मेरा जवाब मदद करने में सक्षम था

0
Buchi 25 फरवरी 2020, 05:31
धन्यवाद। मैं नामकरण के बारे में निश्चित नहीं था लेकिन आपने मेरी मदद की। एन्क्रिप्ट करने के लिए, मैंने वास्तव में ग्राहक विवरण एन्क्रिप्ट करने के बारे में कुछ भी नहीं कहा लेकिन फिर भी धन्यवाद।
 – 
Edd
26 फरवरी 2020, 20:59
आपका स्वागत है। आप मेरे उत्तर को यह दिखाने के लिए अपवोट कर सकते हैं कि इससे मदद मिली है, और यदि मेरा उत्तर स्वीकार किया जाता है तो आप नीचे दिए गए चिह्न बटन पर क्लिक कर सकते हैं। धन्यवाद @Edd
 – 
Buchi
27 फरवरी 2020, 01:33

अपने प्रश्न का उत्तर देने से पहले। मैं आपको बताना चाहता हूं कि मैं अंग्रेजी में अच्छा नहीं हूं लेकिन मुझे साझा करने में खुशी हो रही है।

  1. आपकी तालिका का नाम ठीक है, मैं इसके साथ रहूंगा और पते में बदलने की कोई आवश्यकता नहीं है क्योंकि यह तालिका केवल ग्राहक तालिका के लिए है।

  2. आपके नियंत्रक नाम के बारे में मैं एकल नाम का उपयोग करूंगा, बहुवचन नहीं जैसा आपने किया था। इसलिए CustomerAddressesController के बजाय CustomerAddressController।

  3. आपके रूट नाम फ़ाइल के बारे में ठीक है। मैं वही करूँगा जो तुमने किया था। क्योंकि यह लार्वा दस्तावेज़ का पालन करता है।

  4. लेकिन आपकी रूट फ़ाइल के लिए। मैं बार-बार व्यवस्थापक लिखने के बजाय नाम स्थान और उपसर्ग का उपयोग करना पसंद करता हूं।

Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function () {
    Route::get('customers', 'CustomersController@index')->name('customers.index');
});

अधिक के लिए आप पढ़ सकते हैंलारावेल बेस्ट प्रैक्टिस

धन्यवाद और आशा है कि यह मदद करेगा

0
Sok Hai 25 फरवरी 2020, 06:01
धन्यवाद, मैं लारवेल बेस्ट प्रैक्टिव की जांच करूंगा।
 – 
Edd
26 फरवरी 2020, 21:01