質問 > フロント機能 > softDeleteFilterについて |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yuy-tank |
投稿日時: 2017/11/17 12:15
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
softDeleteFilterについて \ECCUBE\Service\CartServiceのコンストラクタでは、プロパティに値を設定するとともに、loadProductClassFromCart()メソッドを呼び出しています。このメソッドの目的は、\Eccube\Entity\CartItemのobjectプロパティに、カートに入っている商品に対応する\Eccube\Entity\ProductClassをデータベースから探し出してセットするものと理解しております。
このメソッドの冒頭では、 $softDeleteFilter = $this->entityManager->getFilters()->getFilter('soft_delete'); $excludes = $softDeleteFilter->getExcludes(); $softDeleteFilter->setExcludes(array( 'Eccube\Entity\ProductClass', )); という処理が行われていますが、この処理には一体どのような意味があるのでしょうか? データベースに関連した処理であることはわかるのですが、自分はデータベースに弱いので、宜しければ教えて頂きたいです。 |
umebius |
投稿日時: 2017/11/17 12:33
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: softDeleteFilterについて EC-CUBEで使用されているソフトデリート(論理削除)をご存知でしょうか?
データベースから行を実際に削除するのではなく削除フラグを立てています。 カートの商品はDBではなくセッションに情報を保存しているため、誰かがカートに保存している商品に対して削除フラグが立つことがあります。 削除フラグが立った商品は、それを無視する処理を行わわずに読み込もうとするとエラーとなりますので、削除フラグを無視する手続きが必要です。 その手続きがご記載いただいた$softDeleteFilter->setExcludesです。
|
yuy-tank |
投稿日時: 2017/11/17 13:25
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: softDeleteFilterについて なるほど。つまり、dtb_product_classの中でdel_flg=1となっている商品についてはカートに読み込まないということでしょうか?例えば、誰かがカートに商品を入れた後に、その商品が管理側で削除されてしまった場合、その商品はカートからは読み込まれない、ということでしょうか?
|
umebius |
投稿日時: 2017/11/17 14:05
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: softDeleteFilterについて ご指摘の通りです。
読み込まれないだけなら良いのですが、読み込めないとその後でシステム上エラーになるのではないかなと思います。(未確認で申し訳ございません)
|
yuy-tank |
投稿日時: 2017/11/17 14:36
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Re: softDeleteFilterについて なるほど。大変参考になりました。ありがとうございました。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |