ブログ内検索

プログラミング教材開発
大阪府高槻市原地区で肥料教室を開いています
検索キーワード:「SOYShop_User」
 

SOY Shopの顧客管理で属性値の項目名を変更できるようにしました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客管理機能強化として、属性1〜3の項目名を自由に設定できるようになりました。これにより、顧客の詳細検索だけでなく、顧客一覧ページの簡易検索でも活用できます。 従来は「属性1」のような固定名称でしたが、例えば「郵便番号」「誕生日」「紹介者」など、自由に名称を設定できます。この変更により、顧客情報の管理と検索がより便利になります。 また、SOY2フレームワークではSOY Shopの顧客管理と連携できるライブラリを提供しており、ログイン機能などを簡単に実装できます。

 

SQLiteで集計をしてみる

/** Geminiが自動生成した概要 **/
SOY ShopのSQLiteデータベースから、姓が「齋藤」の顧客の注文回数を集計する方法を説明しています。`soyshop_order`テーブルと`soyshop_user`テーブルを`user_id`と`id`で結合し、`WHERE`句で名前を絞り込み、`GROUP BY`句でユーザーごとに集計します。注文金額の合計は`SUM(price)`、注文回数は`COUNT(o.id)`で算出できます。結果として、各「齋藤」さんの注文回数と名前が表示されます。

 

SOY Shopの管理画面の注文一覧ページで表示速度周りを改修しています

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面、特に注文一覧ページの表示速度改善に取り組んでいます。月商数千万円規模のショップで顕著になる速度低下の原因となっていた、顧客名表示等の処理をDAO経由からSQL直書きに変更。顧客情報全体を取得する代わりに必要な名前だけをデータベースから取得することで、処理を効率化しました。他にも例外処理の見直しやテストコードによるエラー修正を行い、体感できる速度改善を実現。今後も処理速度の改善を継続し、最新版はサイトからダウンロード可能です。

 

SOY Shopで勤務先関連の項目の非表示設定を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの顧客グループプラグインで、顧客登録画面の勤務先項目の表示・非表示設定が追加されました。顧客グループで勤務先を管理する場合、標準の勤務先項目は二重登録の原因となるため、非表示設定が有用です。BtoCの物販サイト等でも勤務先情報が不要な場合に活用できます。非表示設定は管理画面の基本設定で行います。この更新により、顧客情報の入力操作が簡素化され、クライアントへの納品時にも混乱が避けられます。アップデート版はsaitodev.coからダウンロード可能です。

 

SOY2DAOでSQLを実行して、オブジェクトで返す

/** Geminiが自動生成した概要 **/
SOY2DAOで複雑なSQLを実行しつつ、結果をオブジェクトで取得する方法が紹介されています。顧客テーブルとカスタムフィールドテーブルを結合し、特定のカスタムフィールド値を持つ顧客情報を取得する例が示されています。 `SOYShop_UserDAO` の `executeQuery` でSQLを実行し、結果の配列をループ処理で `getObject` メソッドに渡すことで、各レコードが `SOYShop_User` オブジェクトに変換されます。これにより、カスタムフィールドの値で検索しながら、必要な顧客情報のみをオブジェクトとして扱いやすく取得できます。この手法は、以前紹介されたSOY CMSの検索フォーム追加の記事でも活用されています。

 

SOY2DAOでデータベースから値を取り出す

/** Geminiが自動生成した概要 **/
SOY2DAOを用いたデータベースからの値の取得方法を解説。プリペアードステートメントに続き、今回はDAOの機能を活用した取得方法を紹介。SOY Shopの顧客情報を例に、`SOY2DAOFactory::create("user.SOYShop_UserDAO")` でDAOオブジェクトを生成し、`$userDao->get()` でデータを取得する様子をコードで示す。取得したデータはSOYShop_Userオブジェクトの配列となり、`$user->getName()` のようにゲッターメソッドで簡単に値にアクセスできる。SQL直接実行の場合と比べ、オブジェクト指向の恩恵で可読性・安全性が向上する点を強調。最後に、SQL実行結果もオブジェクトで扱いたいケースへの言及で締めくくっている。

 

SOY2DAOでプリペアードステートメントを利用する

/** Geminiが自動生成した概要 **/
SOY2DAOでプリペアードステートメントを使う方法を解説します。SQLインジェクション対策として、SQL内に直接値を埋め込むのではなく、プレースホルダ(:name)を使用します。 例: $sql = "SELECT * FROM soyshop_user WHERE mail_address = :mail AND password = :pass"; $binds = array(":mail" => $m, ":pass" => $p); $results = $dao->executeQuery($sql, $binds); executeQueryの第二引数にプレースホルダと値の連想配列を渡すことで、SOY2DAOが安全にSQLを実行します。これにより、$mや$pにSQL構文が挿入されても、悪意のあるクエリの実行を防ぎます。

 

SOY CMS/Shopのモジュール内でSQLを実行する

/** Geminiが自動生成した概要 **/
SOY CMS/Shopのモジュールでは、PHPで自由にSQLを実行できる。PDOは結果の整形が面倒だが、SOY2DAOクラスを使うと便利。 例えば、`soyshop_user`テーブルから上位5件を取得するSQLを、PDOで実行すると連想配列と数値添字配列の混合配列が返り使いにくい。SOY2DAOの`executeQuery`メソッドを使うと、同じSQLでも整形された連想配列として結果が返るため、foreach文などを書かずに扱える。

 

CMSに不正にログインした後、何をする?

/** Geminiが自動生成した概要 **/
SOY CMSに不正ログイン後、ファイルマネージャからのPHPアップロードは不可だが、フロントコントローラ(index.php)に悪意あるPHPコードを埋め込み可能。これにより、サイト閲覧時に勝手にメール送信などの踏み台攻撃が可能になる。対策はindex.phpの書き込み権限を外すこと。SOY ShopのテンプレートやPHPモジュールも悪用されうる。

 

SOY Shopで顧客属性を一括で設定できるページを作成してみた

/** Geminiが自動生成した概要 **/
SOY Shopの顧客属性を一括変更できる機能が追加されました。顧客一覧画面で対象顧客を選択し、追加したい属性値を入力して登録すれば、選択した顧客の属性に値が一括追加されます。また、削除したい属性にもチェックを入れて削除ボタンをクリックすれば、選択した顧客の属性値を一括削除できます。この機能はGitHub上のSOY Shopパッケージで利用可能です。

おすすめの検索キーワード
おすすめの記事

Powered by SOY CMS   ↑トップへ