আপনি কীভাবে একটি 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.