S3を操作するDatasourceを作った。S3を操作するDatasourceを作った。S3を操作するDatasourceを作りたい。分からずに作っているので、微妙です。Datasourceの作り方についてのドキュメントがあまり詳しくないので、あきらめました。目次コンストラクタdescribeメソッドlistSourcesメソッドcalculateメソッドcreateメソッドreadメソッドupdateメソッドdeleteメソッドqueryメソッド完成!コンストラクタ設定は、Config/database.phpに書かれているものが渡ってきます。ここでは、database.phpにAmazonのキーとシークレットを記述しておき、それを元にAmazonS3オブジェクトを作成します。AmazonS3($this->config);}describeメソッドデータ構造を教えてるためのメソッドです。リレーショナルデータベースとかだと、テーブル構造を取得して返すところですが、AmazonS3はただのキーとデータのペアなので、それを返します。$this->fields;}ここに記述されていないキーは、保存の時に削ぎ落とされてしまうので注意です。ローカルのpathにあるファイルを、S3にnameで指定した場所に置きたい場合などを想定して、こういう構造にしておきました。listSourcesメソッドリレーショナルデータベースでは、テーブル一覧に当たるデータを返します。S3なのでバケット一覧を返すことにしました。$bucketNames;}Modelの$useTable変数は、このlistSourcesの結果に含まれている必要があります。ないと「テーブルがありません」的なエラーが出ます。ここでfalseを返しておくと、テーブルの存在チェックを放棄するようなので、面倒だったらfalseを返しておくのもありかもしれません。calculateメソッド以下はCakePHPのドキュメントそのものですが、こう記述すると、find(‘count’)を呼び出す際に、オプションのfieldsにCOUNTを入れてくれます。この有無を元に、読み出しメソッドであるread()の処理を振り分けます。'COUNT';}Model::save()で保存する時などに、データの存在をcountで判定しているようなので、Model::save()を使うためには、データ数をカウントする処理は必要です。createメソッドここからが本質的なメソッドで、CRUDにしたがって記述していきます。createメソッドには、データレコードを追加する処理を記述します。Model::save()が呼ばれた時に呼ばれますが、事前にレコードの存在を確認しており、既存にデータの更新ではcreate()ではなく、update()が呼ばれるそうです。true;}ここでは、指定された名前のオブジェクトをS3にアップロードします。readメソッドここではデータレコードの取得処理を記述します。fieldsがCOUNTの場合は、データの存在だけ見れれば良いので、get_object_headersで存在確認をしています。なければS3からデータを取得して返します。$response->body)));}今回は、S3にはアップロードさえできれば良いので、ここのデータの取得はテキトーです。(データをWEBサーバに取得せずとも、データの居場所さえ分かれば、クライアントからアクセスしてもらえるためです。S3のファイル更新は新しくアップロードすれば良いので、create()をそのまま呼び出します。$values);}deleteメソッドデータレコードの削除処理を記述します。ここでは、単に指定された名前のファイルを削除しているだけです。$response->isOK();}queryメソッドModel::find()の短縮記法として、findByIdなどがありますよね。これの実現方法はまだ詳しく見ていませんが、Datasourceのquery()メソッドを実装すれば実現できました。$data[0])));}}完成!これで、AmazonS3Sourceの完成!(たぶん)使い方編に続きます。S3を操作するDatasourceを作りたい。共働きで世帯年収1,000万円以上の夫婦を「パワーカップル」というらしいです。価格をこれまでの2倍にしても大丈夫なブランドの作り方。小さな会社のためのブランドの作り方。価格をこれまでの2倍する方法を考える。この本で響いたのは、「価格を2倍にしても大丈夫にする方法を考える」というもの。安易な安売り戦略に走ると、価格競争...SaaSWebからビジュアルに操作可能なアプリ向けA/BテストツールApptimizeA/BテストツールといえばOptimizelyが有名ですが、iPhone・Androidアプリ向けのA/Bテストツールはまだこれと言った勝者が決まっていません。先週、OptimizelyもネイティブアプリのA/Bテストに参入することが...CakePHPCakePHP2.2でテーブルを作成したのにテーブルがないと怒られた場合プロダクション環境に置いたCakePHP2.2のプログラムを書き換えて、新しいテーブルを追加し、新しいモデルを追加しようとしました。テーブルがないというようなエラーが出ました。(2/3)」の続きです。センター街の奥、場所が非常に説明しにくいあたりにあります。ソファやクッションが温かい雰囲気でほっとするお店です。R3のシフター交換リアディレーラーのシフトができなくなりました。常にアウターに入っているので激重で走行しなければならずつらいので直すことにしました。原因は調べるまでもなく・・・。