EC-CUBE3系 SQL操作系
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[EC-CUBEめも]]
*SQLを書き換える [#tab40f53]
この方法はEC-CUBE4系でも使えます。
EC-CUBE本体で生成しているSQL文をプラグイン側で変更したい...
WHERE句を取得したい場合
dump($qb->getDQLPart('where'));
WHERE句をリセットしたい場合
$qb->resetDQLPart('where');
ORDER BY句をリセットしたい場合
$qb->resetDQLpart('orderBy');
WHERE句の内容を付け替える場合
// WHERE句を保持
$whereParts = $qb->getDQLPart('where')->getParts();
// WHERE句をリセット
$qb->resetDQLPart('where');
foreach ($whereParts as $part) {
// name検索を付け替え
if (strpos($part, 'NORMALIZE(p.name)') !== false) {
$qb->andWhere('1 = 1');
} else {
$qb->andWhere($part);
}
}
getDQL() で取得してstr_replaceなどで書き換えられるかもし...
*実行されるSQL文を確認する [#qabda924]
この方法はEC-CUBE4系でも使えます。
dump($qb->getQuery()->getSQL());
パラメーターの確認
dump($qb->getQuery()->getParameters());
*論理削除のデータを取得する [#t5895d81]
この方法はEC-CUBE3系だけで使えます。
一時的にフィルタを無効化してデータを取得します。~
取得後はフィルタを有効に戻します。
$filters = $app['orm.em']->getFilters()->disable('soft_d...
$results = $qb->getResult();
$filters = $app['orm.em']->getFilters()->enable('soft_de...
フィルタは以下のファイルにて適用されています。~
src/Eccube/ServiceProvider/EccubeServiceProvider.php
// filters
$config = $em->getConfiguration();
$config->addFilter("soft_delete", '\Eccube\Doctrine\Filt...
$config->addFilter("nostock_hidden", '\Eccube\Doctrine\F...
$config->addFilter("incomplete_order_status_hidden", '\E...
$em->getFilters()->enable('soft_delete');
*CAST関数を使用したい [#d4a1db0c]
拡張すれば利用できるようになります。
こちらを参考にさせていただきました。~
ありがとうございます。
Symfony2【Doctrine DQL関数拡張】MySQL(PostGreSQL)のNOW,RO...
https://webcode-lab.com/topics/blogid/24/
終了行:
[[EC-CUBEめも]]
*SQLを書き換える [#tab40f53]
この方法はEC-CUBE4系でも使えます。
EC-CUBE本体で生成しているSQL文をプラグイン側で変更したい...
WHERE句を取得したい場合
dump($qb->getDQLPart('where'));
WHERE句をリセットしたい場合
$qb->resetDQLPart('where');
ORDER BY句をリセットしたい場合
$qb->resetDQLpart('orderBy');
WHERE句の内容を付け替える場合
// WHERE句を保持
$whereParts = $qb->getDQLPart('where')->getParts();
// WHERE句をリセット
$qb->resetDQLPart('where');
foreach ($whereParts as $part) {
// name検索を付け替え
if (strpos($part, 'NORMALIZE(p.name)') !== false) {
$qb->andWhere('1 = 1');
} else {
$qb->andWhere($part);
}
}
getDQL() で取得してstr_replaceなどで書き換えられるかもし...
*実行されるSQL文を確認する [#qabda924]
この方法はEC-CUBE4系でも使えます。
dump($qb->getQuery()->getSQL());
パラメーターの確認
dump($qb->getQuery()->getParameters());
*論理削除のデータを取得する [#t5895d81]
この方法はEC-CUBE3系だけで使えます。
一時的にフィルタを無効化してデータを取得します。~
取得後はフィルタを有効に戻します。
$filters = $app['orm.em']->getFilters()->disable('soft_d...
$results = $qb->getResult();
$filters = $app['orm.em']->getFilters()->enable('soft_de...
フィルタは以下のファイルにて適用されています。~
src/Eccube/ServiceProvider/EccubeServiceProvider.php
// filters
$config = $em->getConfiguration();
$config->addFilter("soft_delete", '\Eccube\Doctrine\Filt...
$config->addFilter("nostock_hidden", '\Eccube\Doctrine\F...
$config->addFilter("incomplete_order_status_hidden", '\E...
$em->getFilters()->enable('soft_delete');
*CAST関数を使用したい [#d4a1db0c]
拡張すれば利用できるようになります。
こちらを参考にさせていただきました。~
ありがとうございます。
Symfony2【Doctrine DQL関数拡張】MySQL(PostGreSQL)のNOW,RO...
https://webcode-lab.com/topics/blogid/24/
ページ名: