লারাভেল সুস্পষ্ট সম্পর্কের জন্য কৌশল

লারাভেলের অন্যতম শক্তি হল এর মার্জিত সিনট্যাক্স। আপনার যদি লারাভেলে অনেকগুলি মডেল এবং সম্পর্ক থাকে (ডাটাবেসে প্রচুর টেবিলের কারণে), ট্র্যাভার্সিং প্রায়শই কম মার্জিত কোডে শেষ হতে পারে। সময়ের সাথে সাথে, তিনটি ছোট এক্সটেনশন আমার জন্য সফল প্রমাণিত হয়েছে, যা আমি নীচে সংক্ষেপে উপস্থাপন করতে চাই। এটি করার জন্য আমরা শুধু কিছু উত্তরাধিকার, জাদুকরী পদ্ধতি এবং কাস্টম সংগ্রহ ব্যবহার করি।


প্রথমে আমরা অ্যাপ্লিকেশন \ কনভেনিয়েন্সমডেল.পিপি এর অধীনে একটি নতুন মডেল তৈরি করি:

b45e29b9125c2ab565b5526442437686

তারপরে আমরা সমস্ত মডেলকে আমাদের নতুন কনভেনিয়েন্সমডেল থেকে উত্তরাধিকার সূত্রে দেই:

b45e29b9125c2ab565b5526442437686

সম্পর্কের সাথে আপনার নিজস্ব ফাংশনগুলি মিশ্রিত করুন

আপনি যদি সংযুক্ত মডেলগুলি পেতে চান, আপনি তাদের কল করতে স্ট্যান্ডার্ড সিনট্যাক্স ব্যবহার করুন:

b45e29b9125c2ab565b5526442437686

আপনি যদি এখন নিজের ব্যবসায়ের যুক্তি যুক্ত করেন তবে আপনি (নিম্ন) উটের মামলার স্বরলিপি ব্যবহার করতে চান:

b45e29b9125c2ab565b5526442437686

আমরা উভয় ভেরিয়েন্টের বাক্য গঠনটি মানক করতে চাই। এটি করার জন্য, আমরা যাদু পদ্ধতিটি __ কলটি কনভেনিয়েন্সমডেলে যুক্ত করি:

b45e29b9125c2ab565b5526442437686

এই কল উপরের উদাহরণেও সম্ভব:

b45e29b9125c2ab565b5526442437686

খালি জিনিসগুলি পরীক্ষা করুন

কোনো ব্যক্তির ঠিকানার সাথে দেশের নাম আউটপুট করতে চাইলে, প্রায়শই নিম্নলিখিত কোডটি দেখা যায়।:

b45e29b9125c2ab565b5526442437686

এটি প্রতিরোধ করার জন্য, আমরা stringhelper লাইব্রেরিটি অন্তর্ভুক্ত করি এবং কোনো মডেল খুঁজে না পাওয়া গেলে `empty` নামক খালি ক্লাসের একটি বিশেষ অবজেক্ট রিটার্ন করি।:

b45e29b9125c2ab565b5526442437686

এর মানে হল যে কলটি সফল (এই উদাহরণে, যদি কিছু পাওয়া যায়, দেশের নাম আউটপুট, অন্য সব ক্ষেত্রে একটি খালি স্ট্রিং):

b45e29b9125c2ab565b5526442437686

যদি আমরা এই কেসটিও কভার করতে চাই যে ৪২ আইডি ব্যবহারকারীর উপস্থিতি নাও থাকতে পারে তবে আমরা এর জন্য একটি ছোট সহায়ক ফাংশনও তৈরি করব:

b45e29b9125c2ab565b5526442437686

নীচের কলটি এভাবে ব্যবহারকারীর অস্তিত্ব না থাকলেও একটি খালি স্ট্রিং সরবরাহ করে:

b45e29b9125c2ab565b5526442437686

সুবিধামত ট্র্যাভার্স এন: মি সম্পর্ক

অবশেষে, আমরা নিম্নলিখিত কোডটি সহজ করতে চাই:

b45e29b9125c2ab565b5526442437686

এর জন্য আমরা কাস্টম সংগ্রহের সম্ভাবনাটি ব্যবহার করি। আমরা প্রথমে সুবিধার মডেলটি প্রসারিত করছি:

b45e29b9125c2ab565b5526442437686

এরপরে, আমরা app\Helpers\ConvenienceCollection.php ফাইলটি তৈরি করি, যা নিশ্চিত করে যে কালেকশনের মধ্যে যখন কোনো অজানা ফাংশন কল করা হয়, তখন সেই ফাংশনটি কালেকশনের সমস্ত আইটেমের জন্য কার্যকর হয়।:

b45e29b9125c2ab565b5526442437686

সুতরাং আমরা নিম্নলিখিত কোডটি ব্যবহার করে ব্যক্তির সমস্ত পিতামাতার সমস্ত ঠিকানার সমস্ত দেশের সমস্ত নাম আউটপুট করতে পারি:

b45e29b9125c2ab565b5526442437686

তবে নীচের মতো কলগুলিও সম্ভব:

b45e29b9125c2ab565b5526442437686

একাধিক কলাম অনুসারে বাছাই করুন

নিম্নলিখিত কমান্ডটি শুধুমাত্র অবস্থান অনুসারে সাজায়, যদিও সম্ভবত এটি উদ্দিষ্ট ফলাফল ছিল না।:

b45e29b9125c2ab565b5526442437686

একাধিক কলাম দ্বারা বাছাই সক্ষম করার জন্য আমরা আমাদের কনভেনিয়েন্স সংগ্রহটি প্রসারিত করছি:

b45e29b9125c2ab565b5526442437686

এটির সাহায্যে আমরা বেশ কয়েকটি কলামের সাহায্যে সংগ্রহটি সাজান:

b45e29b9125c2ab565b5526442437686

স্ট্যান্ডার্ড বাছাই

আমরা অন্য সহায়ক ফাংশন দিয়ে কনভেনিয়েন্স সংগ্রহটি প্রসারিত করছি:

b45e29b9125c2ab565b5526442437686

এখন আপনি প্রতিটি মডেলকে একটি পৃথক স্ট্যান্ডার্ড বাছাই ফাংশন দিতে পারেন:

b45e29b9125c2ab565b5526442437686

এটির সাহায্যে আমরা সংগ্রহটি বাছাই করতে পারি:

b45e29b9125c2ab565b5526442437686

বস্তুর নাম

প্রতিটি মডেল getLabel পদ্ধতি প্রয়োগ করে (getName মডেলের উপর নির্ভর করে):

b45e29b9125c2ab565b5526442437686

এটির সাহায্যে আপনি দ্রুত এবং সহজেই কোনও জিনিসের নাম প্রদর্শন করতে পারেন। তারপরে আপনি কনভেনিয়েন্স কালেকশনে বাছাই করা লেবেল সহায়তা পদ্ধতিটি প্রয়োগ করতে পারেন:

b45e29b9125c2ab565b5526442437686

খালি ফলাফল

যদি একটি মধ্যবর্তী পদক্ষেপ খালি থাকে, লারাভেল প্রথম () এবং শেষ () সাধারণত ফাংশন শূন্য ফিরে আসে। অতএব আমরা getFrst () এবং getLast () প্রবর্তন করি যাতে নীচের কলটি সর্বদা সফল হয়:

b45e29b9125c2ab565b5526442437686

এর সাথে আমরা __x স্বীকৃত একটি __empty_helper ফিরিয়ে দেব:

b45e29b9125c2ab565b5526442437686

পেছনে