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
।