কম্পিউটার

কিভাবে রেল ব্যবহার করবেন যেখানে পদ্ধতি (উদাহরণ সহ)

Rails-এ, আপনি আপনার ডেটা অ্যাক্সেস করতে আপনার মডেলের মাধ্যমে ডেটাবেস অনুসন্ধান করতে পারেন।

আপনি ActiveRecord ব্যবহার করে এটি করতে পারেন পদ্ধতি।

যেমন where , find , অথবা find_by .

ফলে আপনি পাবেন :

  • find_by দিয়ে , একটি একক রেকর্ড বা nil
  • where সহ , একটি ActiveRecord::Relation বস্তু
  • find দিয়ে , একটি একক রেকর্ড, এটির প্রাথমিক কলাম দ্বারা পাওয়া যায় (সাধারণত id ), না পাওয়া গেলে একটি ব্যতিক্রম উত্থাপন করে

অন্য কথায় :

আপনি যদি একটি রেকর্ড (একটি নির্দিষ্ট ব্যবহারকারী) আশা করছেন, তাহলে find_by ব্যবহার করুন , একাধিক রেকর্ডের জন্য (ব্যবহারকারীদের একটি তালিকা) where ব্যবহার করুন .

কিন্তু where এটি ব্যবহার করার অনেক উপায় রয়েছে, যা প্রায়শই নতুনদের বিভ্রান্ত করে।

কোন সমস্যা নেই!

আপনি where ব্যবহার করতে পারেন এমন বিভিন্ন উপায়ে আমরা একবার নজর দেব আপনার রেল অ্যাপ্লিকেশনগুলিতে৷

বেসিক যেখানে শর্তাবলী

where ব্যবহার করার উদ্দেশ্য আপনার ডাটাবেসের তথ্য ফিল্টার করে এমন একটি ক্যোয়ারী তৈরি করা, যাতে আপনি শুধুমাত্র আপনার পছন্দের সারিগুলি পান৷

উদাহরণস্বরূপ :

একটি Book দেওয়া হয়েছে মডেল, title সহ , author &category .

আপনি একটি নির্দিষ্ট লেখকের সমস্ত বই বা একটি নির্দিষ্ট বিভাগের অধীনে ফাইল করা সমস্ত বই খুঁজে পেতে চাইতে পারেন৷

এখানে একটি প্রশ্ন আছে :

Book.where(category: "Ruby")

এটি একটি category সহ সমস্ত বই ফেরত দেয় "রুবি" এর।

আপনি শর্তগুলিও একত্রিত করতে পারেন৷

এরকম :

Book.where(category: "Ruby", author: "Jesus Castello")

এটি category উভয়ের সাথে মেলে এমন বই ফেরত দেয় &author .

এবং আপনি where একত্রিত করতে পারেন একটি সুযোগ সহ।

# scope definition
class Book
  scope :long_title, -> { where("LENGTH(title) > 20") }
end

# controller code
@books = Book.long_title.where(category: "Ruby")

একটি হ্যাশ ব্যবহার করা (fruit: "apple" ), আপনাকে একটি কলাম কিছুর সমান কিনা তা পরীক্ষা করতে দেয়।

কিন্তু যদি আপনি সমতা খুঁজছেন না?

তারপর আপনাকে একটি স্ট্রিং ব্যবহার করতে হবে।

রেল যেখানে:এর চেয়ে বড় এবং তার চেয়ে কম

আপনি যদি “এর চেয়ে বড়”, “এর চেয়ে কম” বা এরকম কিছু…

চেক করতে চান

এটি এভাবে করুন :

Book.where("LENGTH(title) > 20")

আপনি যদি মানগুলিকে প্রসারিত করতে চান…

এটি এভাবে করুন :

Book.where("LENGTH(title) > ?", params[:min_length])

এই ? একটি "প্লেসহোল্ডার" বলা হয়, এবং এটি "SQL ইনজেকশন" আক্রমণ এড়াতে নিরাপত্তার জন্য ব্যবহৃত হয়।

আরেকটি বিকল্প হল নামযুক্ত স্থানধারক ব্যবহার করা।

উদাহরণ :

Book.where("LENGTH(title) > :min", min: params[:min_length])

আমি এটিকে প্রশ্ন চিহ্ন স্থানধারকের তুলনায় কম সাধারণ বলে মনে করি, তবে এটি অনেক ইন্টারপোলেটেড মান জড়িত প্রশ্নের জন্য কার্যকর হতে পারে।

কোথায় নয় এবং কোথায় বা শর্তগুলি কীভাবে ব্যবহার করবেন

আসুন আরও জটিল প্রশ্ন দেখি।

আপনি যদি পরীক্ষা করতে চান যে একটি শর্ত সত্য নয়, তাহলে আপনি where একত্রিত করতে পারেন not দিয়ে পদ্ধতি।

এখানে একটি উদাহরণ আছে :

Book.where.not(category: "Java")

আরেকটি উদাহরণ :

Book.where.not(title: nil)

এটি Book খুঁজে পায় একটি title সহ এটা nil নয় .

একটি OR শর্ত সম্পর্কে কী?

আপনি where একত্রিত করতে পারেন or দিয়ে দুই বা ততোধিক শর্তের যে কোনো একটির সাথে মেলে এমন সারি পাওয়ার পদ্ধতি।

এটি কীভাবে কাজ করে তা এখানে রয়েছে :

Book.where(category: "Programming").or(Book.where(category: "Ruby"))

এটি দুটি where একত্রিত করে একটিতে প্রশ্ন করুন৷

একবার চেষ্টা করে দেখুন!

রেইলস যেখানে অ্যারে উদাহরণে

আমরা যে সমস্ত উদাহরণ দেখেছি সেগুলি একটি নির্দিষ্ট মান সন্ধান করে৷

কিন্তু আপনি একাধিক মান খুঁজতে পারেন।

কিভাবে?

একটি অ্যারে ব্যবহার করা হচ্ছে!

উদাহরণ :

Book.where(id: [1,2,3])

এটি একটি "IN" কোয়েরি তৈরি করে যা একই সময়ে, এই সমস্ত আইডিগুলি অনুসন্ধান করবে৷

SELECT "books".* FROM "books" WHERE "books"."id" IN (1, 2, 3)

আপনি রেল লগগুলিতে এই প্রশ্নটি পাবেন।

রেলস অ্যাসোসিয়েশন শর্তে যোগদান করে

আপনি যদি কোনো অ্যাসোসিয়েশন মানের উপর ভিত্তি করে মিল খুঁজছেন, তাহলে আপনাকে সেই অ্যাসোসিয়েশনটি joins সাথে উপলব্ধ করতে হবে পদ্ধতি।

তাহলে আপনি এটি করতে পারেন৷ :

Book.joins(:comments).where(comments: { id: 2 })

এই প্রশ্নের সাথে আপনি সমস্ত বই পাবেন, যার একটি মন্তব্য আছে, এবং মন্তব্য id হল 2 .

স্ট্রিং সংস্করণের জন্য :

Book.joins(:comments).where("comments.id = 2")

যেখানে comments হল টেবিলের নাম, এবং id কলামের নাম।

How to search inside text with a where like condition

আপনি যদি একটি অনুসন্ধান ফাংশন বাস্তবায়ন করতে চান, আপনি একটি আংশিক মিলের জন্য অনুমতি দিতে চাইতে পারেন৷

আপনি একটি "লাইক" ক্যোয়ারী দিয়ে এটি করতে পারেন৷

এখানে একটি উদাহরণ আছে :

Book.where("title LIKE ?", "%" + params[:q] + "%")

এটি সার্চ টেক্সট আছে এমন সব শিরোনাম খুঁজে পায়, যা params (params[:q] দ্বারা প্রদত্ত ), শিরোনামের ভিতরে যে কোন জায়গায়।

খুব সহায়ক প্রশ্ন!

শতাংশ প্রতীক কি ?

SQL-এ, % একটি ওয়াইল্ডকার্ড অক্ষর৷

ভিডিও:যেখানে বনাম Find_By বিস্তারিতভাবে

সারাংশ

আপনি শিখেছেন কিভাবে রেল where ব্যবহার করতে হয় আপনার ActiveRecord প্রশ্ন করার পদ্ধতি মডেল!

সহ :

  • কিভাবে একাধিক শর্ত দ্বারা ফিল্টার করতে হয়
  • কার্যকরভাবে একাধিক সারি খুঁজে পেতে অ্যারে ব্যবহার করবেন
  • কিভাবে where ব্যবহার করবেন or এর সাথে একত্রে &not আরও জটিল প্রশ্ন লেখার পদ্ধতি

এখন এটিকে বাস্তবে প্রয়োগ করার পালা আপনার।

পড়ার জন্য ধন্যবাদ 🙂


  1. রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

  2. রুবি গ্রেপ পদ্ধতি কীভাবে ব্যবহার করবেন (উদাহরণ সহ)

  3. রুবি মানচিত্র পদ্ধতি কীভাবে ব্যবহার করবেন (উদাহরণ সহ)

  4. লিনাক্সে ঘড়ির কমান্ড কীভাবে ব্যবহার করবেন, উদাহরণ সহ