মেটা_কিউরি অপারেটরের ব্যাখ্যা তুলনা করুন


37

আমি লক্ষ্য করেছি যে অপারেটরদের গুচ্ছ রয়েছে মেটা_কোয়ারিতে তুলনা করার জন্য ব্যবহার করা যেতে পারে। তবে আমার কোন অপারেটরটি ব্যবহার করা উচিত তা আমি পুরোপুরি নিশ্চিত নই, এটি কোনওরকম বিভ্রান্তিকর মতো =এবং LIKEঅপারেটর।

আমি প্রতিটি অপারেটরটির সঠিক অর্থ কী এবং আমি কী অবস্থায় সেগুলি ব্যবহার করব তা জানতে চাই।

=
!=
>
>=
<
<=
LIKE
NOT LIKE
IN
NOT IN
BETWEEN
NOT BETWEEN
NOT EXISTS

ধন্যবাদ।

উত্তর:


50

আপনার পছন্দ মতো প্রথম কয়েকটি কাজ:

=   equals
!=  does not equal
>   greater than
>=  greater than or equal to
<   less than
<=  less than or equal to

LIKEএবং NOT LIKEএসকিউএল অপারেটর যা আপনাকে ওয়াইল্ড-কার্ড প্রতীকগুলিতে যুক্ত করতে দেয়, যাতে আপনার মতো মেটা কোয়েরি থাকতে পারে:

array( 
    'key' => 'name', 
    'value' => 'Pat', 
    'compare' => 'LIKE'
)

এটি মেটা মান "নাম" এর "প্যাট" স্ট্রিং রয়েছে এমন সমস্ত পোস্টে ফিরে আসবে। এই ক্ষেত্রে, "প্যাট" "প্যাট্রিসিয়া" এবং "প্যাট্রিক" সমস্ত আপনার কাছে ফিরে আসবে। এখানে একটি অ-ওয়ার্ডপ্রেস টিউটোরিয়াল ব্যাখ্যা রয়েছে

ওয়াইল্ডকার্ড চরিত্রটি যুক্ত %করা প্রয়োজনীয় নয়, কারণ এটি ডিফল্টরূপে যোগ হয় যেমন @ হার্ব তার নীচের উত্তরে বলেছিলেন । এটির মতো: $meta_value = '%' . like_escape( $meta_value ) . '%';- উত্স দেখুন

INএবং NOT INপ্রদত্ত অ্যারেতে (বা না থাকা) কোনও মিল নির্বাচন করুন। সুতরাং আপনি এই মত কিছু করতে পারে:

array(
    'key'     => 'color', 
    'value'   => array('red', 'green', 'blue') 
    'compare' => 'IN'
)

এবং এটি এমন সব পোস্ট পাবে যা রঙ লাল, সবুজ বা নীল রঙে সেট করেছে। 'নট ইন' ব্যবহার করে বিপরীতটি পাওয়া যায়, যে পোস্টগুলিতে অ্যারেতে থাকা ব্যতীত অন্য যে কোনও কিছুতে মান সেট থাকে।

এর জন্য উত্পন্ন এসকিউএল এর মতো দেখতে কিছু হবে:

SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue") 

BETWEENএবং NOT BETWEENআপনাকে এমন মানগুলির একটি ব্যাপ্তি নির্ধারণ করতে দেয় যা সঠিক হতে পারে এবং আপনাকে আপনার মেটা_কোয়ারিতে একটি অ্যারেতে দুটি মান দেওয়ার প্রয়োজন:

array( 
    'key' => 'price', 
    'value' => array(20,30) 
    'compare' => 'BETWEEN'
)

এটি আপনার সমস্ত পোস্ট পাবেন যেখানে দাম 20 থেকে 30 এর মধ্যে রয়েছে This এই ব্যক্তি খেজুর সহ একটি উদাহরণ খনন করে।

NOT EXISTSযা শোনাচ্ছে ঠিক তেমনই - মেটা মান সেট করা নেই বা নাল মানতে সেট করা আছে। এই ক্যোয়ারির জন্য আপনার যা দরকার তা হ'ল কী এবং তুলনা অপারেটর:

array( 
    'key' => 'price', 
    'compare' => 'NOT EXISTS'
)

এই ব্যক্তির অস্তিত্বহীন মেটা মানগুলি জিজ্ঞাসা করা দরকার ছিল এবং অন্যদের সাথে সুন্দর খেলার প্রয়োজন ছিল।

আশাকরি এটা সাহায্য করবে!


দ্রষ্টব্য: আপনি যদি meta_queryঅ্যারে ব্যবহার করছেন তবে আপনার কীগুলি উপসর্গ করা উচিত নয় meta_। আপনি ব্যবহার করেন, তাহলে $query->meta_key, $query->meta_valueইত্যাদি তবে এই এখনো উপসর্গ বজায় রাখা উচিত।
শান

"IN" তুলনা বিকল্পটি কী করে তার কোনও ব্যাখ্যা আমি খুঁজে পাচ্ছি না। কোন ধারণা কিভাবে কাজ করে?
জো

1
@ জো, আমি কেন "ইন" এবং "নট ইন" সম্পর্কে কিছু যুক্ত করিনি তা জানি না। আমি এই তুলনাগুলির সাথে উত্তরটি সম্পাদনা করেছি এবং আপডেট করেছি।
জেন

7

নোট করুন যে 'LIKE' এর একটি মেটা_কম্পের মান ব্যবহার করার সময়, ওয়ার্ডপ্রেস স্বয়ংক্রিয়ভাবে মেটা_ভ্যালু স্ট্রিংয়ের চারপাশে ওয়াইল্ডকার্ড অক্ষর (%) কেটে দেয়। সুতরাং 'প্যাট%' উদাহরণ কোনও ফল দিতে ব্যর্থ হতে পারে।


ডক্সে কোথাও হার্বের সম্পর্কে তথ্য আছে? উদাহরণটি মুছে ফেলা উচিত %?
জেন

এটি হওয়া উচিত, আমি আসলে এখনই এটি করেছি, উত্সটি দেখুন , তারপরে এটি খুব স্পষ্ট হয়ে যায় যে হার্বটি ঠিক। @ গুইনিভেরেটো
নিকোলাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.