変数との列比較を小文字で比較することを強制するSQL WHERE句に条件を書き込もうとしています。ただし、addExpression関数はこれを実行していません(式がフィールド句ではなく、where句に配置されているため)。
これが私が試したものです:
$category = 'mobile wifi';
$query = db_select('taxonomy_term_data', 'ttd')
->fields('ttd', array('tid'));
$query->innerJoin('taxonomy_vocabulary', 'tv', 'ttd.vid = tv.vid');
$query->addExpression("LOWER(ttd.name) = $category");
$result = $query->condition('machine_name', 'images_cat', '=')
->execute()
->fetchAssoc();
この:
$category = 'mobile wifi';
$query = db_select('taxonomy_term_data', 'ttd')
->fields('ttd', array('tid'));
$query->innerJoin('taxonomy_vocabulary', 'tv', 'ttd.vid = tv.vid');
$result = $query->condition('machine_name', 'images_cat', '=')
->condition('LOWER(ttd.name)', $category, '=')
->execute()
->fetchAssoc();
2つ目は無効になり、1つ目は前述の問題を引き起こします。考えや提案はありますか?
ありがとう、パトリック