SelectQueryপ্রয়োগগুলি SelectQuery::__toString(), যা প্রসঙ্গে বলা হয় যেখানে স্ট্রিং প্রয়োজন।
নিম্নলিখিত কোড বিবেচনা করুন।
global $theme_key;
$query = db_select('block')
->condition('theme', $theme_key)
->condition('status', 1)
->fields('block');
print $query;
এর আউটপুট নিম্নলিখিত এক।
SELECT block.*
FROM
{block} block
WHERE (theme = :db_condition_placeholder_0) AND (status = :db_condition_placeholder_1)
ক্যোয়ারির জন্য ব্যবহৃত আর্গুমেন্টের অ্যারে পেতে, আপনি কল করতে পারেন SelectQuery::arguments()।
নিম্নলিখিত কোডটি ডিভেল মডিউল থেকে উপলব্ধ ফাংশনগুলি ব্যবহার করে ক্যোয়ারী এবং তার যুক্তিগুলি মুদ্রণ করে।
global $theme_key;
$query = db_select('block')
->condition('theme', $theme_key)
->condition('status', 1)
->fields('block');
dpm((string) $query);
dpm($query->arguments());

যদিও ডিভেল মডিউলটি প্রয়োজনীয় নয় এবং আপনি drupal_set_message()আউটপুটটি প্রদর্শন করতে পারেন। উদাহরণস্বরূপ, স্থানধারকদের আসল মান দ্বারা প্রতিস্থাপনের সাথে একটি স্ট্রিং পেতে আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারেন।
function _get_query_string(SelectQueryInterface $query) {
$string = (string) $query;
$arguments = $query->arguments();
if (!empty($arguments) && is_array($arguments)) {
foreach ($arguments as $placeholder => &$value) {
if (is_string($value)) {
$value = "'$value'";
}
}
$string = strtr($string, $arguments);
}
return $string;
}
পূর্বের উদাহরণ কোডটি আমি দেখিয়েছি যে নিম্নলিখিতটি হয়ে উঠবে।
global $theme_key;
$query = db_select('block')
->condition('theme', $theme_key)
->condition('status', 1)
->fields('block');
drupal_set_message(format_string('Query: %query', array('%query' => _get_query_string($query))));
function _get_query_string(SelectQueryInterface $query) {
$string = (string) $query;
$arguments = $query->arguments();
if (!empty($arguments) && is_array($arguments)) {
foreach ($arguments as $placeholder => &$value) {
if (is_string($value)) {
$value = "'$value'";
}
}
$string = strtr($string, $arguments);
}
return $string;
}
লক্ষ করুন যে, SelectQuery::arguments()ক্যোয়ারী আর্গুমেন্ট অ্যারে ফেরৎ শুধুমাত্র যখন পরে বলা হয় SelectQuery::__toString(), SelectQuery::compile()অথবা SelectQuery::execute(); অন্যথায়, SelectQuery::arguments()ফেরত NULL।
স্ট্রিং কোয়েরিটি পেতে আপনি নীচের মত অনুরূপ একটি ফাংশন ব্যবহার করতে পারেন, স্থানধারীদের যুক্তি দিয়ে প্রতিস্থাপন করা হয়েছে।
_get_query_string()অংশ হওয়া উচিত ছিলSelectQuery।