আপনি কীভাবে একটি db_select () ক্যোয়ারিতে একটি লাইক শর্ত তৈরি করবেন?


14

আপনি কীভাবে LIKEএকটি db_select()ক্যোয়ারিতে একটি শর্ত তৈরি করবেন ?

আমি জানি db_query()এপিআই কল দিয়ে এটি কীভাবে করা যায় তবে এটি করার জন্য কি কোনও বিশেষ বাক্য গঠন / পদ্ধতি আছে db_select()?


2
কেবলমাত্র ভবিষ্যতের রেফারেন্সের জন্য , আপনি আর্গুমেন্ট স্থানধারক হিসাবে যে কোনও কিছুতে পাস db_queryকরতে পারেন, আপনি এটিতে যুক্তি হিসাবেও পাস করতে পারেন ...Query::condition। প্রতিটি পৃথক প্রকারের ক্যোয়ারির জন্য আপনি প্রতিটি পৃথক অপারেটরের জন্য ডকুমেন্টেশন পাবেন না, কারণ এটি করার অর্থ হবে না। এটি সমস্ত দিন শেষে PDO এর মধ্য দিয়ে যায়, যদি db_likeকোনও ভেরিয়েবলটি সঠিকভাবে প্রস্তুত করে db_query, তবে সংজ্ঞা অনুসারে এটি একই ভেরিয়েবলটি সঠিকভাবে প্রস্তুত করবেdb_select
ক্লাইভ

2
কেউ এটির পরামর্শ দেওয়ার আগে, আপনি db_select + LIKE সম্পর্কে প্রশ্ন না পেলে আমাদের মনে হয় না যে আমাদের এটির দ্বিধা আছে। আমাদের কাছে db_query + LIKE আছে, তবে উত্তরটি একই হলেও প্রশ্নটি আলাদা।
এমপিডোনাদিও

উত্তর:


21

ড্রুপাল ডকুমেন্টেশনের মাধ্যমে খননের পরে db_ Like এপিআই ডকুমেন্টেশন পৃষ্ঠা এবং সিলেক্ট কোয়েরিতে: শর্ত হ্যান্ডলার ডক পৃষ্ঠায় একটি সমাধান পাওয়া গেল ..

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

$result = db_select('field_data_field_name', 'f')->fields('f', array(
    'entity_id',
    'field_name_value'
))
->condition('entity_type', 'user')
->condition('bundle', 'user')
->condition('deleted', 0)
->condition('field_name_value', '%' . db_like($last_item) . '%', 'LIKE')
->distinct()
->range(0, 10)
->execute();

লাইক ক্যোয়ারির জন্য ব্যবহারের শর্তটি

->condition('field_name_value', '%' . db_like($last_item) . '%', 'LIKE')

2
দুটি বিষয় এখানে লক্ষ্য করুন যে (1) db_like()যুক্তিটি সঠিকভাবে পালাতে হবে এবং (2) আপনার স্পষ্টতই ওয়াইল্ডকার্ডের অক্ষর যুক্ত করতে হবে। এটি ডেটাবেজে ডিফল্ট কোলেশন ব্যবহার করবে এবং আমি মনে করি না যে আলাদা করার কোনও উপায় আছে।
এমপিডোনাদিও

1
আমি এটিকে আরও কিছুটা আরও বিস্তৃত করে তোলার পরে আজ একটি সময় নিতে পারি। আমি কখনই ডিবি এপিআইয়ের কথা মনে করতে পারি না, এবং গতকাল আক্ষরিকভাবে একই জিনিসটি দেখছিলাম।
এমপিডোনাদিও

1

"LIKE" ক্যোয়ারী তৈরি করার সময় আপনি ড্রুপাল ore কোর \ ডাটাবেস \ ডাটাবেসও ব্যবহার করতে পারেন। এটি ড্রুপাল 8 বিকল্প সিনট্যাক্স যেহেতু db_select () অবমূল্যায়িত হয়েছে।

$database = Database::getConnection();
$query = $database->select('TABLE NAME', 'u')
    ->fields('u', array('column1','column2'));
$query->condition('column1', '%'.$database->escapeLike($search_phrase) . '%', 'LIKE');

অথবা ওআর ক্যোয়ারির সাথে একাধিক যুক্ত করুন।

$DB_OR = $query->orConditionGroup()
  // find match anywhere in field
  ->condition('column1', '%' . $database->escapeLike($search_phrase) . '%', 'LIKE')

  // find match starting at beginning
  ->condition('column2', $database->escapeLike($search_phrase) . '%', 'LIKE');

  // find match at end of field
  ->condition('column1', '%' . $database->escapeLike($search_phrase), 'LIKE')
$query->condition($DB_OR); // Add OR object as condition
$result = $query->execute();

আমি এই সমাধানটি পছন্দ করি, কারণ এটি একটি বিশ্বব্যাপী "db_ Like ()" এর পরিবর্তে বিল্ট ইন ডাটাবেস ফাংশন (পর্বত লাইক) ব্যবহার করে। তিনটি সম্ভাবনার কথাও উল্লেখ করছি।
ssibal

1

"লাইক" ব্যবহারের জন্য db_selectনীচের মত এবং আমার জন্য কাজ করেছে ...

$search_value = "testvalue@xmail.com";
$query = db_select('TABLE NAME', 'u');
$query->fields('u', ['ROW1', 'ROW2']);
$query->condition('ROW1', '%' . db_like($search_value) . '%', 'LIKE');
$result = $query->execute();

এখানে ROW1 এর সঠিক মান হ'ল "testvalue@xmail.com" এবং LIKEশর্তটি ব্যবহার করে db_selectআমি আউটপুটটিকে "testvalue@xmail.com" হিসাবে পেয়েছি।


0

এটি ড্রুপাল 8 সংস্করণ 1 এ কাজ করে

$exp = "1";
$connection = \Drupal::database();
$query = $connection ->select('node', 'n');
    $query->fields('n');
    $query->condition('nid', '%'.db_like($exp), 'LIKE');
    $records = $query->execute();
foreach ($records as $record) {
ksm($record);
}

সংস্করণ 2

$connection = \Drupal::database();
$query = $connection->query("SELECT *FROM {node} WHERE nid like '%' :nid '%'", [
  ':nid' => "1",
]);
$records = $query->fetchAll();

foreach ($records as $record) {
ksm($record);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.