タグ

cakephpに関するash1takaのブックマーク (49)

  • CakePHPのデータベースを開発環境と本番環境で切り分ける方法

    CakePHPには利用するデータベース定義を複数定義しておける機能がありますが、その使い分けに関するアイデアです。 よくある解決策 よく開発環境と番環境で自動的にデータベース接続を切り替えられるように、以下のようにDATABASE_CONFIGクラスのコンストラクタを改良したり、AppModelクラスのコンストラクタに現在の環境を判別できるような設定を書いたりするアイデア多く見かけられます。 DATABASE_CONFIGクラスの改良 class DATABASE_CONFIG { public $default = array(); // 公開用 public $production = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'production.mysql.server', 'login' => '

    CakePHPのデータベースを開発環境と本番環境で切り分ける方法
  • CakePHPでUPDATEするときのクエリを(少しだけ)減らしてみた | 日記の間 | あかつきのお宿

    CakePHPでINSERTやUPDATEの処理を行うときって、どちらもsave()メソッドを使いますよね。 //INSERT時 $this->Model->create($data); $this->Model->save($data); //UPDATE時 $this->Model->set($data); $this->Model->save($data); あとはまあ、UPDATEのときにはsaveField()というメソッドもあるけど、あれは最終的にはsave()メソッド呼び出してます。 save()メソッドの便利なところは、入力するデータ(上の場合だと$data)にプライマリーキーの値がセットされていたら、自動的にUPDATE文にしてくれるってところですよね。 で、さらにこいつは、UPDATEのときはその値がキーになっているレコードが存在するかどうかを、SELECT文を投げて確

    CakePHPでUPDATEするときのクエリを(少しだけ)減らしてみた | 日記の間 | あかつきのお宿
  • CakePHP 2.x系の更新時のSQL発行回数を減らしたい - ダメプログラマの技術メモ

    今年7月に入ってから業務でCakePHPを使用しており、外国人プログラマ達によって書かれたソースの改修とパフォーマンス・チューニングを行っています。 その際、DB更新処理でSQLの発行回数を減らす必要が生じたので、その対応方法を述べたいと思います(需要はあまりないかもなぁ) saveメソッドのSQL発行回数は多い? DBの更新処理にはsaveメソッドを使用することが多いと思いますが、実はこいつ、かなりの曲者です。 百聞は一見に如かずです。 まず下のメソッドを見てください。 public function addPoint($user_id, $point) { $user = $this->findById($user_id); $user['User']['point'] += $point; $this->save($user); } 実際に今の案件で散見されるsaveメソッドの使い方

    CakePHP 2.x系の更新時のSQL発行回数を減らしたい - ダメプログラマの技術メモ
  • virtualField機能使ってみた - 趣味の延長線

    shin1x1さんがtwitterで「ver1.3にこんな機能がある」とtwitterで呟かれていたのをみて、実際に使ってみました。 virtualField機能で、できること*1 定形の計算や文字列処理を、取得時にSQL内で行う SQL関数を直接指定 まずは、作成したMemberモデルに、元記事を参考に、$virtualFieldを設定して見ます*2。 app/model/members.php var $virtualFields = array( 'name' => 'CONCAT(Member.first_name, " ", Member.family_name)' );そして、bakeで作ったindex(members一覧)にアクセスすると、こんなSQLが出力されていました。 SELECT `Member`.`id`, `Member`.`first_name`, `Membe

    virtualField機能使ってみた - 趣味の延長線
  • CakePHP のFormHelperで任意のControllerを使用する方法 - Surflog 2.0

    公式ドキュメントにも記載されていますが、 案外はまってしまうことも多い仕様のため、自戒の意味で。 FormHelper — Cookbook v2.x documentation FormHelperのControllerおよび、actionを自由に変更する方法。 <?php echo $this->Form->create(null, array('url' => '/recipes/add')); // or echo $this->Form->create(null, array( 'url' => array('controller' => 'recipes', 'action' => 'add') ));

    CakePHP のFormHelperで任意のControllerを使用する方法 - Surflog 2.0
    ash1taka
    ash1taka 2012/12/03
    フォームヘルパー
  • ヘルパー - 1.3

    ヘルパー¶ ヘルパーはアプリケーションのプレゼンテーション層のコンポーネントに似たクラスです。プレゼンテーション用のロジックをもち、多くのビュー・エレメント・レイアウト間で共有されます。この章では独自のヘルパーの作成方法を示します。CakePHP のコアヘルパーが目的を達する助けとなる基のタスクを概観します。コアヘルパーの詳細は Built-in Helpers を見てください。 ヘルパーを使用する¶ コントローラに指定することで CakePHP でヘルパーを使用します。各コントローラは $helpers プロパティをもち、ビューで利用可能なヘルパーをリストします。ビューでヘルパーを有効にするには、コントローラの $helpers 配列にヘルパー名を追加します。 <?php class BakeriesController extends AppController { var $hel

  • http://www.cpa-lab.com/tech/081

  • CakePHPでアソシエーション先のフィールドを検索対象に含めたい場合

    コントローラー内でfind()検索するとき、対象のテーブルだけではなく、hasManyなどのアソシエーションでつながっている先のテーブルのフィールドを検索したいことがある。 この場合、単純に find('all',array('conditions'=>array( '対象テーブル.id '=>"%{$this->data['対象テーブル']['title']}%", '対象テーブル'.'関連テーブル'.id like '=>"%{$this->data['対象テーブル']['title']"))); とやって、できるかなーと思っても機能しない(><)。。 で、それを回避するためにいったん、アソシエーション先のテーブルを検索してその結果のidを、find('list')で保持しておき、それを検索結果に含める、という段階をとる。 $id_list = $this->対象テーブル->関連テーブ

  • HugeDomains.com

    Captcha security check halteria.com is for sale Please prove you're not a robot View Price Processing

  • CakePHPのFormHelper入門をさくっと+複数チェックボックスとかdiv消したり - 地中へのはしご

    今回検索機能の実装時に初めてFormHelperを使いました。しかし元々できることを別の方法でやるために勉強するのは辛いですね。ちょっとした詰まりで悲しい気持ちになるので、同様の境遇の人の参考になればと思います。なお、細かいことはCakePHP1.3準拠です。 内容 FormHelperの意義 FormHelperの基 Tips 複数チェックボックスの作成 余分なdivタグやhiddenフィールドを消す FormHelperの意義 FormHelperはPHPのコードでフォームを自動で生成してくれるものです。フォームを非常にCakePHPっぽく扱うことができるのですが、下手すると記述量が逆に増えたりもします。トータルで見るとメリットの方が多いと感じましたが、Cakeと一度限りの付き合いなら使わないという選択肢もありかと。 メリット ・name属性の入力が楽になる nameを単語で指定すれ

    CakePHPのFormHelper入門をさくっと+複数チェックボックスとかdiv消したり - 地中へのはしご
  • CakePHP virtual field that is a sum of three other virtual fields?

  • モデル - 1.3

    モデル¶ モデルはデータを表現し、CakePHP アプリケーションではデータアクセスに使用されます。モデルは通常データベースのテーブルを表現しますが、ファイル・LDAP レコード・iCal イベント・CSV ファイルの行のようなデータを保存するものにアクセスするために使用することができます。 モデルは他のモデルと関連付けすることができます。たとえば、Recipe はレシピ内の Ingredients と同様に Author と関連づいています。 このセクションではモデルのどんな特徴が自動化されているか、その特徴をどのようにオーバーライドするか、モデルがどんなメソッドやプロパティをもっているかを説明します。データを関連付ける様々な方法も説明します。データの検索・保存・削除の仕方についても記述しています。最後にデータソースを見てみます。 モデルを理解する¶ モデルはデータモデルを表現し、オブジ

  • VitualFieldsを使おう! - 24時間CakePHP

    CakePHP1.3からは、VirtualFieldsが利用できる。 これはSQL でいったら sql_function(hoge) as aliasといったcolmunをそのままフィールドとして利用できる機能だ。 それでは実例を追いながら順次説明していこう。 要求: グループの一覧を表示したい。 また、グループには何人参加しているかを集計して同時に表示する。 関係 Group hasAndBelongsToMany User Model <?php class Group extends AppModel { var $name = 'Group'; var $virtualFields = array( 'user_count' => 'count(GroupsUser.user_id)', ); var $hasAndBelongsToMany = array( 'User', );

    VitualFieldsを使おう! - 24時間CakePHP
  • Virtual fields - 2.x

  • CakePHPで GROUP BY や SUM,COUNT とかを取る場合のバーチャルフィールド(virtual fields)利用

    $result = $this->Model->find('all', array( 'fields'=> array('id', 'count(id) as cnt'), 'conditions' => array('id >=',100), 'group' => array('id'), )); Array ( [0] => Array ( [Model] => Array ( [id] => 1 ) [0] => Array ( [cnt] => 1 // ココに追加されてしまう。[0]は使いづらい。 ) ) [1] => Array ( [Model] => Array ( [id] => 2 ) [0] => Array ( [cnt] => 1 ) ) [2] => Array ( [Model] => Array ( [id] => 3 ) [0] => Array ( [c

    CakePHPで GROUP BY や SUM,COUNT とかを取る場合のバーチャルフィールド(virtual fields)利用
  • Bake a Cake --(5)-- bakeでdatabase.php

    CakePHPをガチで勉強します!目下アプリケーション作成中! あとは、Webを中心に気になるツール、テクノロジーをPickupしたりしなかったり。 目次ページはこちら 今までとこれからが詰まっている目次へのエントリーへのリンク 前回、bakeを使って、プロジェクトを立ち上げました。 今回も、bakeを使っていきましょう。 前回の最後に出てきた画面ですが、 ここで、黄色の枠で囲まれている部分が、設定未完了部分です。 Your database configuration file is NOT present. (データベース設定ファイルがないよ。) Rename config/database.php.default to config/database.php (config/database.php.default を config/database.php にリネームしてね。) と

  • CakePHPでFacebookにConnectしてみた

    でも着実にユーザーを増やしているFacebook。いいねボタンが色んなサイトに設置されていますし、某CGMサイトでは自身のコメントシステムを排除してFacebookプラグインに置き換えたり(それまで投稿されたコメント見れなくなった…)と勢いがハンパないです。 そんな激アツなFacebookとCakePHPを連携してアカウントを作成するコントローラーを作成してみました。 まずはオフィシャルのphp-sdkを入手 ゲットしたファイル群をapp/vendorsにfacebookディレクトリを作って丸ごとぶち込む FacebookControllerを作成(ユーザ情報のテーブルを扱えるならなんでもいい) さてここからコーディング開始。 まずはメンバ変数$facebookを宣言して、beforeFilter()でインスタンスを生成します。 var $facebook; function befo

  • コントローラ - 1.3

    This document is for a version of CakePHP that is no longer supported. Please upgrade to a newer release! コントローラ¶ はじめに¶ コントローラは、アプリケーションのロジック部分の管理に用いられます。たいていの場合、コントローラは、単一モデルのロジックの管理に使用されます。例えば、オンラインのパン屋のためのサイトを作っている場合には、RecipesController(レシピコントローラ)とIngredientsController(材料コントローラ)を作って、レシピと材料について管理することができます。CakePHPでは、コントローラ名は扱うモデルに基づいたものになり、複数形です。 Recipeモデルは、RecipesControllerによって扱われ、ProductモデルはPro

  • redirect :: フロー制御 :: コントローラのメソッド :: コントローラ :: CakePHPによる開発 :: マニュアル :: 1.2コレクション

    redirect(mixed $url, integer $status, boolean $exit) もっともよく使用するフロー制御のメソッドは、redirect()です。このメソッドは、第1引数に CakePHP 流の相対 URL を指定します。 ユーザーが首尾よく注文したとき、領収書の画面にリダイレクトさせたいかもしれません。 <?php function placeOrder() { //ここは注文完了のロジック if($success) { $this->redirect('/orders/thanks'); } else { $this->redirect('/orders/confirm'); } } ?> <?php function placeOrder() { //ここは注文完了のロジック if($success) { $this->redirect('/orders

  • 認証 - 1.3

    認証¶ ユーザ認証システムは多くのウェブアプリケーションで一般的な仕組みです。CakePHP には、それぞれ異なるオプションを持つユーザ認証のシステムがいくつかあります。それらの中核を担う認証コンポーネントでは、ユーザがあるサイトにアカウントを持っているかどうかをチェックします。もしアカウントが存在すれば、コンポーネントはユーザに対してサイトへのアクセスを許可します。 このコンポーネントは ACL (アクセス制御リスト, Access Control List)コンポーネントと併せて使うことで、より複雑なサイト内のアクセス権限を作成できます。ACL コンポーネントは、例えば、あるユーザにはサイトの一般的な領域にアクセスすることを許可し、別のユーザには保護されたサイトの管理領域へのアクセスを許可するといったことを実現できます。 CakePHP の AuthComponent を使うと、こうい