ECサイト運営開発記

PHPフレームワーク Laravelの使い方を中心とした通販サイトの開発日記

PHP

Bootstrap4とLaravel5.1でネットショップをリニューアルした

カレンダーの通販サイト E-カレンダー.comをリニューアルしたので、記録とし、まとめておこうと思います。 以下、リニューアル前の環境。[リニューアル前] サーバーはGMOクラウドPublicのVPS Apache1.3系、PHP5.3、MySQL5系のよくある環境。 Webアプリケーシ…

Laravel4でArtisanによるCLI開発

Laravel4の便利機能のひとつにArtisanというコマンドラインツールが存在します。 プロジェクトルートにて、php artisan ***** とコマンドを打つことで、様々な命令を実行させることができる機能です。 今回は、とりあえず、CSVデータを読み込んで、DBにデー…

ORM Eloquentに追加された新機能

Laravel4の正式リリースまであと1ヶ月ちょっとらしい。現在はBeta5の開発段階。 フレームワークとしての仕様もほぼ固まってきて、おそらく、大幅な変更点は無いだろうということでEloquentの新しい機能を紹介します。 コレクション Laravel4のEloquentでは、…

Laravel4でコントローラーの作成とモデルの作成に関する簡単なまとめ

Laravel4のBeta4がリリースされ動きが活発なLaravel。Laravel4のコントローラーの作成とモデルの作成に関する簡単なまとめを残しておこうと思います。[下準備] Laravel4のインストールについては前のエントリーを参照して下さい。 Laravel4で「HelloWorld」…

Laravel4で「HelloWorld」を表示させるまで

最近、ようやく、注目が集まってきたPHPのWebアプリケーションフレームワークLaravelのLaravel4 Beta4が リリースされたので、HelloWorldを出力するまでの流れを簡単に書いていこうと思います。【Laravel4のインストール】 Laravel4はLaravel3とは違ったイン…

LaravelのORM Eloquentで括弧を使ったクエリーのグループ化する方法

商品テーブルから削除フラグが0で公開ステータスが1の商品で、更に入力されたキーワードに該当する商品を取得したい where("item_public_status", "=", 1) ->where(function($query) use($keyword) { $query->where("item_name", "LIKE", "%$keyword%"); $qu…

LaravelのキャッシュでRedisを使う

PHPフレームワークのLaravelでキャッシュエンジンをRedisにしてみた。以外と、すんなり言ったので、記事を残しておく。 Redisの概要 オープンソースのkey/valueなデータストア インメモリデータベースで非常に高速に動作する ファイルキャッシュするよりいい…

LaravelのORM機能 Eloquent の EagerLoading

LaravelのORM Eloquentには、Eager Loadingという機能がある。 モデル内に定義されたメソッドを元に自身以外の他テーブルからデータを引っ張りだしてくれる便利な機能。 例えば、以下の様なECサイトのテーブル構成でイメージしてみる。商品テーブルにはimage…

LaravelでSQLの実行結果が簡単にわかるプロファイラー機能

Laravel3.1になり、Bandle(プラグイン)として提供されていたSQLプロファイラーのAnbuが標準で組み込まれることになり、LaravelでもCakePHPのようなSQL実行結果が簡単にわかるようになったようです。このプロファイラーはCake同様、ページの下部に固定される…

LaravelのELOQUENTの便利なSETTERとGETTER

LaravelのORMには特定のフィールドに対して、ちょっとした処理を加えて、データを保存できたりする便利な メソッドがあります。わかりやすいのは、パスワードを暗号化して保存したい場合。 $user->password="password" としてやるだけで、文字列が暗号化され…

Laravelのバリデーションの日本語化など。

Webアプリでは欠かせない重要な機能。入力値の検証いわゆるバリデーション。もちろん、Laravelにも、バリデーション機能があるわけで。 一応、備忘録として、日本語化の方法なども含めて、簡単に残しておこうと思う。 下準備 application/config/application…

LaravelでUndefined variableが出てうざい場合

application/config/error.php array(E_NOTICE), ?> と書いてやればいい。

LaravelのBladeテンプレート

PHPのフレームワーク「Laravel」のコントローラーの簡単な使い方とBladeテンプレートについて、備忘録も兼ねて残しておく。 Laravelのインストール方法については、割愛。ダウンロードして、この辺を参考にすれば、基本どうにかなるので。 コントローラーを…

MVCフレームワーク Laravel 3.0

PHP

FuelPHPを勉強してみたが、ORMがなんとなく、気に入らなかったので、他のフレームワークを探してみると、気になるフレームワークを発見。それがLaravel。なんて、読むのかは知らない。ララヴェル?公式サイトは以下のとおり。 http://laravel.com/[概要] Lar…

FuelPHPで気になるあの情報の取り出し方

リクエスト関連の情報 http://example/index/list/でアクセスした場合 コントローラー名の取得 Request::main()->controller "index"ではなく"Controller_Index"というコントローラークラス名が返ってくる。 "index"という名前を取りたい場合はRequest::main…

PHPフレームワークYiiを使ったので、とりあえずメモ

Yiiでオリジナルの設定項目を記述 PATH_TO_PAPP/protected/config/main.phpに "params"=>"params"=>require(dirname(__FILE__)."/params.php") を記述。 同じディレクトリにparams.phpを作成 params.phpで連想配列を返すようにする。 "Yii PHP Framework", /…

入荷情報や在庫情報をTwitterにつぶやいて、ECサイト上にも表示する

ECサイトを運営していると、入荷情報や在庫の情報はこくこくと変わっていきます。 そのたびに、サイトの更新情報として、1ページ書き上げるわけにもいきません。 で、今更ではありますが、Twitterでなにかできないかと思い、ECサイト×Twitterの簡単なサンプ…

findManyToManyRowsetメソッドでトラブった

PHP

Zend_Db_Table_RowクラスのfindManyToManyRowsetメソッドの仕様が変わってしまったため、中間テーブルのデータが取得できないという事態に陥った。 原因はZend_Db_Table_Row_AbstractのfindManyToManyRowsetメソッド内にある一行。 以前は、Zend_Db_Select::…

ECサイトでPHP×MongoDBを使ってみた

PHP

ここ最近よく見かける言葉で「ドキュメント指向型データベース」なんてのがありますが、正直、従来のRDBMSとどう違うのかさっぱりわからない。 で、このドキュメント指向型データベースの代表格がCouchDBとMongoDBなんですが、自分なりに調べてみた結果、Mon…

Smarty3から変わったものなど...

Smarty2系で使用されていた関数名はcamelCase形式になる。 代表的な例 assign_by_ref($tpl_var, &$value) assignByRef($tpl_var, &$value, $nocache = false, $scope = SMARTY_LOCAL_SCOPE) nocacheがtrueだとキャッシュされない。携帯サイトのセッションID…

Smarty3のinsertプラグインに変わる機能

PHP

nocacheブロックでキャッシュを無効にする {nocache} {$var} {/nocache} 変数出力の際にnocache属性をつける {$var nocache=true} または {$var nocache} asssignの際の第三引数をtrueにする $smarty->assign("var","Grate!",true); {$var}

Zend_Db_TableでIN句を指定する方法

SELECTでIN()を使う場合 tableオブジェクトに対してWhereの指定を行う fetchAll($table->select()->where("item_id IN(?)",$idList)); var_dump($rowset); ?> UPDATEでIN()を使う場合 tabl…

Zend FrameworkのZend_Db_Tableで商品同士の関連付けを行う。

Zend FrameworkのO/RマッパーでもあるZend_Db_Tableを使ってテーブルの連結を行う。 商品テーブルと関連テーブルを連結して、関連商品を取得するサンプル。

Zend_Db_Table_Rowを使ったログの保存

_table->getAdapter()); $lm->doInsertLo…

Zend Paginatorのシンプルな使い方

全200件を10件/1ページ毎表示する場合。 Zend_Paginator::factoryで総合件数を指定。 setCurrentPageNumberメソッドで現在のページ番号を指定。 setItemCountPerPageメソッドで1ページあたりの表示件数を指定。 setCurrentPageNumber(1); $pager->setItemCou…

Zend Framework1.8のZend ApplicationでnoViewRendererを指定する

application.iniに以下のように追記 [production] resources.frontController.noViewRenderer = true

ECサイトをPHPフレームワークで全面リニューアルした。

カレンダーの通販サイト「E-カレンダー.com」をシステムをPHPフレームワークで全面リニューアルした。以前までは、Javaのサーブレットっぽいフレームワークっぽいものを使っていたのですが、それだといろいろと効率が悪いということで、 全ての処理を見直し…

Zend_Db_TableでO/Rマッピング -基本操作編

PHP

Zend_Db_TableでO/Rマッピング準備編の続きです。 テーブル定義や宣言したクラスなどは事前にご確認ください。[ここでやりたい事] 新規に商品を追加する(行の追加) 商品情報を更新/削除する(行の更新/削除) もちろん、SQLは一切、書かない ■商品の追加(行の…

Zend_Db_TableでO/Rマッピング -準備編

PHP

Zend Frameworkに同梱されているZend_Db_Tableを使ってO/Rマッピングにチャレンジしてるが不慣れなため、 まだまだ使いこなせていない。 現時点で、Zend_Db_Tableを使って実現できた事と、実現できていない事を簡単にまとめておく。[DB設計] 架空のECサイト…

翔泳社が本気だ

ここ最近、翔泳社がPHPのフレームワーク本を立て続けに出している。 CodeIgniter、CakePHP、そして、今度はZend Framework。 となると、今度は大穴でrhaco?やっぱり、書籍化されるかされないかってのは大きいと思う。 今後も、翔泳社の本は要チェックだ。Ze…

何を作るというわけでもないけど、CakePHPにチャレンジ

PHP

Smartyばかりやっていたせいで、Viewの部分でecho をつけ忘れて「あれ?出力されない。」って事がしばしば。 ActiveRecordを一通りやったら、bakeにも挑戦してみたい。ActiveRecordのメモ 文字化けする時は、"encoding" => "utf8"って書いておくといいらしい…

PHPフレームワークのCakePHPとCodeIgniterの本

PHP

6月にPHPのフレームワークCakePHPのポケットリファレンスとCodeIgniterの本が出版されるそうです。CodeIgniterははじめての書籍化。CakePHP ポケットリファレンス発売日:2008-06-18発送時期:近日発売 予約可ランキング:詳細をみる(Guppyで詳細をみる) Cod…

Vista氏 localhostの存在を否定

PHP

タイトル通りなんですが、自宅のPCをWindows VistaのHome Basicにアップグレードしてみたのですが、 そのせいでいろいろと問題が生じました。Vistaのインストールも5時間ほどかかりましたが、無事、アップ グレード成功。で、EclipseとかPHPとかまぁ、その辺…

Zend Frameworkを使ってアクセスログ保存してみる

PHP

Zend Frameworkで現在、作ってるサイトでアクセスログ的な物を取り入れてみようと、考えてみたけど、 以下のような感じでテーブル定義してアクセスログを保存してみる。 CREATE TABLE access_log ( id INT NOT NULL AUTO_INCREMENT, controller_name VARCHAR…

PHPのフレームワーク本まとめ

PHP

今年はPHPのフレームワーク本がたくさん出版されました。 ZendFramework、CakePHP、Symfomy、Ethnaなど主要フレームワークの本はほとんど出たようです。「ZendFrameworkの本」 PHPフレームワーク Zend Framework入門バージョン1.0以降の本なので、安心して読…

Zend Frameworkのアクション名やコントローラー名の命名規約

開発用のWindows環境と本番のサーバー上の環境では違うだって事を思い知らされた。Windowsでは大文字と小文字はある程度融通が利くようだが、Linuxではそうはいかない。全くDispatchされずに延々と時を過ごしていました。おまけにSmartyをViewに使っていたも…

PHPによるECサイトプログラミングを読んだ。

PHPによるECサイトプログラミング~ショッピングカートから―MySQLのデータベース設計とPHPセッション管理の作法ソシム大角 清美(著)発売日:2007-10amazon.co.jpで詳細をみる (Amazy)内容的にはまぁ・・・そうだろうな〜という程度。もちろん、テンプレート…

サイトに商品検索機能を入れてみた

少し前の話になるが、ショッピングサイトを運営していく上で商品検索の機能は欠かせないだろうという事で、サイトに商品検索機能を入れてみた。 ただし、検索は単一キーワードのみのシンプルな検索機能だ。もちろん、どんなキーワードで検索しているかもログ…

Zend Frameworkが1.0になってどう思った?

PHP

http://framework.zend.com/home 本格的使ってみようと思った。

PHP×Ethna買いました。

PHP

本のサイズは意外と小さくていいです。PC系の書籍はどうも無駄に大きいので、このサイズは本当にありがたいです。肝心の内容ですが、フレームワークとしての概念的な解説が多くを占めていますが、この内容ならしっかり勉強できそう。また、今後の予定として…

Zend Framework 1.0.0 RC3がリリース

PHP

「Zend Framework 1.0.0 RC3」 もうすぐ1.0です。

Ethnaの本が出るらしい

PHP

Ethnaの本が出るらしい。PHPフレームワークのEthnaの解説本が出版されるらしい。192ページとそこそこのボリューム。発売日は6月の下旬。個人的には、Zend FrameworkやSymfonyの本が出てくれると嬉しいんだが、、Ethna×PHP [LLフレームワークBooks]技術評論社…

MySQLのTIMESTAMP型とPHP5.2とeAccelerator

自分アホです。MySQLのTIMESTAMP型はUPDATEのたびに、そのテーブルの一つ目のTIMESTAMP型のデータが更新されてしまうようです。知らんかった。しかし、Windows版だとならないのはなんでだろうか?もっと詳しく見ていかなきゃならないけど、今のところはここ…

PDO SQLiteでATTACH DATABASEが出来ない?

PHP

PDO SQLiteでATTACH DATABASEができない。どうしても。ネイティブなSQLiteの関数だとできるのか?明日、試してみなくてはいけない。こいつができるかできないかで、今作ってるプログラムにかなり影響が・・・。で、追記。 ネイティブなsqlite関数ではATTACH…

無限継承? -PHP IDEが警告してくれたスタックオーバーフロー

PHP

PHP IDEはとても素晴らしい。 というこんなマヌケなコードを書いてしまった自分。 そして、このクラスの中にfunction...と書こうとしたら、コード補完機能が働いたPHP IDEは警告してきた。「スタックオーバーフロー」である。キーボードを打つたびにこの警…

Mojavi3.0+PHP5.1でちょっとビックリ

PHP

諸事情でMojaviを真剣に学習している最中なんです。 それはさておき、Mojavi3.0の動作確認でちょっとビックリ。デフォルトのアクション実行したら、こんなエラーメッセージがズラズラと・・・。 Strict Standards: date() [function.date]: It is not safe t…