অ্যাক্টিভেকর্ড জিজ্ঞাসা এবং আপনি: কীভাবে () কাজের সঠিক পদ্ধতি খুঁজে পাবেন

আনসপ্ল্যাশ-এ এজেন্সি ওলোয়েবের ছবি

আপনি যদি আমার মতো কিছু হন তবে নতুন প্রোগ্রামার হিসাবে ডাটাবেসগুলি সম্পর্কে প্রথমে শেখার সময় আপনার অভিজ্ঞতাটি ছিল একটি বিস্ময়কর-অনুপ্রেরণার অভিজ্ঞতা। হঠাৎই, ইন্টারনেটের জটিল অভ্যন্তরীণ কাজগুলি আপনার সামনে পরিষ্কার হয়ে গেল - এটি সমস্ত উপায়ে টেবিল এবং সংযুক্তি।

এসকিউএল শেখার ক্ষেত্রে এবং কীভাবে আসলে সেই ডাটাবেসের সাথে কীভাবে ইন্টারঅ্যাক্ট করতে হয় সে বিষয়ে আপনি যদি আমার মতো কিছু হন তবে আপনার প্রথম অভিজ্ঞতা সম্ভবত আপনার পূর্বের প্ররোচিত রিভারি থেকে কিছুটা অভদ্র জাগ্রত কল হয়েছিল were হঠাৎ আপনি বুঝতে পেরেছেন যে প্রতিটি ডাটাবেসের জন্য প্রচুর পরিমাণে তথ্য সঞ্চয় করা যায়, এমন কোনও ব্যক্তিকে থাকতে হবে যে সেই তথ্যটি থেকে বেরিয়ে আসার জন্য কীভাবে ডার্ন জিনিসটি রঞ্জিত করতে হয়। এবং আপনি সম্ভবত বুঝতে পেরেছেন যে নির্দিষ্ট ব্যক্তি খুব শীঘ্রই বা পরে, আপনি হতে চলেছেন।

ধন্যবাদ, আধুনিক প্রোগ্রামিং ফ্রেমওয়ার্কগুলি ডেটা তৈরি, সঞ্চয় এবং পুনরুদ্ধারের জন্য আমাদের সুবিধাজনক এবং স্বজ্ঞাত উপায় দিয়েছে। আজ, আমরা একটি নির্দিষ্ট কাঠামোর কথা বলব - রুবে অন রেল - এবং এর একটি বিশেষ দিক যা ডাটাবেস পরিচালনকে একটি হাওয়া - অ্যাক্টিভেকর্ড বলে।

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

একটি রেল অ্যাপ্লিকেশনটির মধ্যে আপনার মডেলগুলি, নিয়ন্ত্রকগুলি এবং দর্শনগুলি সমস্তই আপনার ডাটাবেসে জিনিস সংরক্ষণের দুর্দান্ত কাজটি করার জন্য একত্রিত হয়, তবে অবশেষে আপনাকে সেগুলি নিয়ে কিছু যুক্তি করার জন্য সেই তথ্যগুলির উদাহরণগুলি আবার টানতে হবে, বা কেবল তাদের দেখানোর জন্য। প্রশ্নগুলি খেলতে আসে That's অ্যাক্টিভেকর্ডের মধ্যে থাকা কোয়েরিগুলি মূলত এসকিউএল কমান্ডগুলি হ'ল পাঠযোগ্য, লিখিতযোগ্য রুবি সিনট্যাক্সের একটি উজ্জ্বল কম্বলের ভিতরে আবৃত থাকে, আপনাকে কীভাবে প্রথমে পুনরুদ্ধার করতে হবে তা ভেবে বরং আপনি কী করতে যাচ্ছেন সে সম্পর্কে আরও চিন্তাভাবনা করার অনুমতি দেয়।

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

  1. .অনুসন্ধান()
  2. .find_by ()
  3. .কোথায়()

.অনুসন্ধান()

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

যেহেতু অতিথির প্রতিটি উদাহরণ তৈরির পরে সংরক্ষণ করা হয়, তাই এটি ডাটাবেসে একটি প্রাথমিক কী বা আইডি দেওয়া হয়। ভবিষ্যতে এই অতিথির উদাহরণটি পুনরুদ্ধার করার জন্য, আপনি অতিথির ক্লাসে সন্ধান () কেবল এটি পূরণ করতে হবে (উদাহরণস্বরূপ এটি একটি ভেরিয়েবলে সংরক্ষণ করে):

ডেকে আনা হলে যা অতিথির শ্রেণীর উদাহরণ ফিরিয়ে দেবে:

উপরের সন্ধানের () পদ্ধতির জন্য হুডের অধীনে চালিত এসকিউএল সমমান হ'ল:

দেখে মনে হতে পারে যে (কোনও পদ্ধতি খুব সুনির্দিষ্ট - সর্বোপরি, আপনি কত ঘন ঘন আপনার ডাটাবেসের কোনও অবজেক্টের উদাহরণের আইডি কী তা জানতে পারবেন? আশ্চর্যের বিষয় হল, আপনি যতটা ভাবেন তার চেয়ে বেশি বার আইডি অ্যাক্সেস করতে সক্ষম হবেন, বিশেষত রেলগুলিতে HTTP পরামিতি ব্যবহার করার সময়। কিন্তু এখনও, এটি একটি খুব নির্দিষ্ট উদ্দেশ্য পরিবেশন করে।

লক্ষণীয় নয় যে আপনি প্রাথমিক কীগুলির একটি অ্যারেটিকে আর্গুমেন্ট হিসাবে পাস করে একাধিক উদাহরণ ফিরিয়ে দিতে পারবেন:

আপনি ব্যবহার করে অনুরূপ কিছু অর্জন করতে পারেন:

.গ্রহণ করা

যা একটি আর্গুমেন্ট হিসাবে একটি সংখ্যা গ্রহণ করে এবং আরোহী ক্রমে শ্রেণীর অনেক উদাহরণ পুনরুদ্ধার করে।

অনুরূপ অফ-অঙ্কুর অনুসন্ধান () এর মধ্যে রয়েছে:

.প্রথম এবং শেষ

যা যথাক্রমে ক্লাসের প্রথম এবং সর্বশেষ নির্মিত উদাহরণগুলি পুনরুদ্ধার করে। এগুলিকে পাশাপাশি আর্গুমেন্ট হিসাবে সংখ্যা দেওয়া যেতে পারে, যা ক্লাসের অনেকগুলি উদাহরণ যথাক্রমে আরোহণ বা অবতরণ ক্রমে ফিরে আসে।

এটি আমাদের পরবর্তী এবং আরও বহুমুখী ক্যোয়ারী পদ্ধতির দিকে নিয়ে যায়: সন্ধান_বি ()

.find_by ()

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

এখানে সমতুল্য এসকিউএল হ'ল:

দুর্দান্ত, আমরা একটা জিনিস ফিরে পেয়েছি! তবে অপেক্ষা করুন, তিনি হলেন অভিনেতা মাইকেল জে ফক্স, এবং আমরা মাইকেল জে ফক্সকে নভোচারী খুঁজে পেতে চেয়েছিলাম! (দ্রষ্টব্য: এটি কেবল একটি উদাহরণ, আমি মাইকেল জে ফক্স নামে একজন নভোচারীর অস্তিত্বের সত্যতা বা অস্বীকার করতে পারি না))

এই উদাহরণটি সন্ধানের জন্য, আমরা আরও নির্দিষ্ট করে বলতে পারি:

হুররে! আমাদের অনুসন্ধানকে সূক্ষ্ম সুরে দেওয়ার দক্ষতার জন্য ধন্যবাদ, আমরা অতিথি শ্রেণীর সঠিক উদাহরণটি সন্ধান করেছি। এটি .find_by () এর শক্তি। তাত্ত্বিকভাবে আপনি নিজের অনুসন্ধানকে সঙ্কুচিত করার জন্য যতগুলি শ্রেণীর বৈশিষ্ট্য চেয়েছিলেন ততক্ষণ অনুসন্ধান করতে পারেন।

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

আপনি উপস্থিতিটির নির্দিষ্ট উদাহরণটি পুনরুদ্ধার করতে .find_by () ব্যবহার করতে পারেন এবং আপনি যে কোনও জায়গায় যুক্তি যুক্ত করতে পারেন। আসুন অতিথির ক্লাস পদ্ধতি হিসাবে এটি ব্যবহার করুন:

যখন কোনও অতিথির উদাহরণে ব্যবহার করা হয় এবং যখন কোনও পর্বের কোনও উদাহরণকে আর্গুমেন্ট হিসাবে দেওয়া হয়, এটি সেই নির্দিষ্ট উপস্থিতির উদাহরণটি ফিরিয়ে আনবে। অ্যামেজিং!

"তবে", আপনি হয়ত বলছেন, "আমি যদি ক্লাসের একাধিক উদাহরণ পুনরুদ্ধার করতে চাইতাম তবে কী হবে? আমি যদি মাইকেল জে ফক্স অভিনেতা এবং মাইকেল জে ফক্স উভয়েরই প্রতিটি ঘটনা পুনরুদ্ধার করতে চাই তবে নভোচারী? "

আপনি জিজ্ঞাসা করে আমি আনন্দিত, কারণ আমাদের পরবর্তী এবং চূড়ান্ত পদ্ধতিটি এখানে আসে:। কোথাও ()

.কোথায়()

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

.Find () এবং .find_by () কোনও অবজেক্টের একক দৃষ্টান্ত ফেরত দেওয়ার সময়, কোথাও () একটি "অ্যাক্টিভেকর্ড :: রিলেশন অবজেক্ট" বলে ডাকে ফিরে আসে, মূলত কিছু অতিরিক্ত তথ্য সংযুক্ত করে উদাহরণগুলির একটি অ্যারে। ফলস্বরূপ,। কোথাও () সম্পূর্ণরূপে ব্যবহার করার জন্য নেস্টেড তথ্যের অ্যারেগুলির সাথে কাজ করার জন্য আরও কিছু মধ্যবর্তী জ্ঞানের প্রয়োজন হবে।

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

মাইকেল জে ফক্স নামের অতিথিদের সমস্ত উদাহরণ খুঁজে পাওয়ার জন্য আপনি আমাদের কোথাও () অনুরোধটি আমাদের পূর্ববর্তী উদাহরণগুলির অনুরূপ লিখতে পারেন:

বাহ, এখন আরও আছে! আমাদের কাছে মাইকেল জে ফক্স চিত্রশিল্পী এবং মাইকেল জে ফক্সও সুরকার ian একটি সহজ পদ্ধতিতে আমরা প্রতিটি অতিথির একটি অ্যারে পেয়েছি সেই নামটি - কী শক্তিশালী সরঞ্জাম!

এখানে জিনিসগুলি আকর্ষণীয় হয়ে উঠেছে's আপনি যদি কোথাও () কোয়েরিতে একাধিক শর্তাদি পাস করতে চান তবে বাক্য গঠনটি কম পরিচিত কিছুতে পরিবর্তিত হবে।

মাইকেল জে ফক্স নামের অভিনেতাদের একাধিক উদাহরণ থাকলে, আপনি প্রশ্নের খোঁজটি একটি .find_by () অনুরোধের অনুরূপ করতে পারেন:

অথবা আপনি এটি এসকিউএল এর সাথে আরও অনুরূপভাবে বাক্য বলতে পারেন:

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

আপনি যদি মাইকেল জে। ফক্স অভিনেতা বা মাইকেল জে ফক্সের মহাকাশচারীর সমস্ত উদাহরণ পুনরুদ্ধার করতে চান তবে আপনি আরও জটিল জিজ্ঞাসা তৈরির জন্য আপনার। কোথাও () অনুরোধগুলি এক সাথে শৃঙ্খলিত করতে পারেন:

.Or ব্যবহার করে একই অনুরোধের শৃঙ্খলাবদ্ধ করার পাশাপাশি উপরে বর্ণিত এবং অন্তর্নিহিতভাবে ব্যবহার করে অনুসন্ধান করার সক্ষমতা, কোথাও () আপনার ডাটাবেসটির মাধ্যমে ঝাঁকুনির বিষয়ে এবং ক্লাসগুলির একাধিক উদাহরণগুলি ফিরে আসার ক্ষেত্রে আপনি কীভাবে প্রয়োজন সেটিকে শক্তিশালী ইউটিলিটি দেয় where ।

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

আরো দেখুন

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