スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

sfPropelPagerオブジェクト(ページャー)について

codezine.jp/article/detail/911
スポンサーサイト

Photoshopを極める、すごいチュートリアル50個まとめ 2012年3月版 Photoshopを極める、すごいチュートリアル50個まとめ 2012年3月版 83

photoshopvip.net/archives/34742

CSSやタイトル()、metaタグ、テンプレート共通部分の設定について

1:テンプレートの共通部分について
  ホームディレクトリ配下の(プロジェクト名)/(アプリケーション名)/templates/layout.phpに
   記述することが可能。(<head></head>部分<body></body>部分)

  <?php echo $sf_data->getRaw('sf_content') ?>をlayout.phpの<body></body>に
  記述すると、indexSuccess.phpに 書かれた内容が表示される。

2:css,metaタグ、titleタグの設定について
  ホームディレクトリ配下の(プロジェクト名)/apps/(アプリケーション名)
      /config/view.ymlにmetaタグなどの設定がある。
  この中で<title></title>などの表示を設定することができる。 (<head>の内容)
  
     cssの指定は以下の部分で行う。

  stylesheets:    [main , default]

  カンマの間は半角スペースをひとつ開ける。
  CSSはweb/css配下に、記述順に定義される。

  上記の設定例は、web/cssフォルダ直下の
     main.css,default.cssを見に行くような設定である。

  設定後、プロジェクト名のフォルダ直下へ進み、
     symfony cc(キャッシュクリアー)コマンドを入力すると反映される。
     これを行わないと、キャッシュの関係で修正が反映されないことがあるので
     注意すること。


エラーチェックについて

symfonyではValidateと呼ばれる。

・(プロジェクト名)/(アプリケーション名)/(モジュール名)/validateディレクトリに、
    値を渡す先のアクション名.ymlファイルを設置する
・設置したアクション名.ymlにエラーチェックのルールを記述する。
・エラーが無ければ、「execute+値を渡す先のアクション名」のアクションへ、
・エラーがあれば、「handleError+値を渡す先のアクション名」のアクションに遷移する
・テンプレートにエラーメッセージを表示させる。

上記の「値を渡す先のアクション名」というのは、呼び出し側のアクション名
(=画面と同意義)となるので注意する。

たとえば、AとBというアクション名があったとします。
Aで入力を行い、エラーがあればエラー処理をし、
エラーがなければ、DBへ登録し、完了画面を表示させるという処理の場合、
作成するファイル名、処理名は以下のようになる。

作成するymlファイル名:B.yml
エラーがない場合のアクション名:executeB.php
エラーがある場合のアクション名:handleErrorB.php

[記述例]
  public function executeB()
  {
      $comment = new CommentTbl();

      // 投稿テーブルID
      $comment -> setContriId($this -> getUser() -> getAttribute('contri_id'));
    // 氏名
      $comment -> setName($this -> getRequestParameter("com_name"));
    // タイトル
    $comment -> setTitle($this -> getRequestParameter("com_title"));
    // URL
    $comment -> setUrl($this -> getRequestParameter("com_url"));
    // コメント
    $comment -> setComment($this -> getRequestParameter("com_comment"));

    $comment -> save();

    $this -> message = "コメント投稿を完了しました。";
    $this -> returnUrl = "/index/contridetail/";
    $this -> setTemplate('../../common/templates/complete');
  }
-------------------------------------------------------------------------
  public function handleErrorB()
  {
      $this->forward('index', 'contridetail');
  }
------------------------------------------------------------------------
forwardの第二パラメータは、エラーになったときに戻すアクション名。

1:ymlファイルの記述方法
fields:
    nickname:(チェックする項目名)
       required:(必須であることをあらわす)
          msg: ニックネームを入力してください。(表示するエラーメッセージ)

一項目で複数のエラーチェックがある場合は、必要な分バリデータを
追加する。バリデータの種類については、symfonyの公式ページを参照のこと。

[記述例]
fields:
      nickname:
         required:
            msg: ニックネームを入力してください。
        sfStringValidator:
           min:          2
           min_error:    少なくとも2文字入力してください
           max:          100
           max_error:    100文字以下で入力してください

2:エラー発生時に入力値を残すには?
     $sf_params->get("フォームタグのnameに指定した内容")を
     フォームタグの中に指定すればよい。

     [記述例]
      <input type="text" name="nickname" size="20" value="<?php echo $sf_params->get("nickname")?>">

3:カスタムバリデーターについて
     複雑なルールでエラーチェックを行いたい場合、カスタムで
     バリデータを作成することができる。

     (プロジェクト名または、アプリケーション名)/lib/配下に
  validatorフォルダーを作成し、その中に
     カスタムバリエータークラスを作成する。(名称は任意)
  プロジェクト名または、アプリケーション名配下のlibどちらに
  作成してもよいが、作用する範囲が異なる。
  そのバリデータクラスがあるフォルダと同層のレベル
  または、その配下に作用する。

     作成時は、sfValidatorクラスを継承すること。
    パラメータを参照渡しにしているが、これは、Symfonyの作り上、
    returnパラメータでfalse,trueしか返すことができないため、
    参照渡しにすることにより、パラメータの中を変化させることにより、
    関数からの戻り値を取得する。

    [作成例]
  class myNicknameTabooValidator extends sfValidator
  {
      public function execute(&$value, &$error)
      {
          // バリデート内の他のリクエストやユーザ情報の取得方法
          $request = sfContext::getInstance()->getRequest();
          $user = sfContext::getInstance()->getUser();

          $nickname = $request -> getParameter("nickname");

          if (strpos($nickname,"死") !== false) {
              $error = $this -> getParameter("taboo_error");
              return false;
          }
          return true;
      }
  }

  上記の記述を行う場合、yml内に以下の内容を記述する。

  fields:
    nickname:
      myNicknameTabooValidator:
         taboo_error: 不適切な文字が含まれています

4:エラーメッセージの表示について
  ymlファイル内に記述したエラーメッセージは、form_error('チェックする項目名')で
  表示可能。

  [記述例]
  <?php echo form_error('password');?>

5:エラーメッセージ表示時の装飾について
  デフォルトでは、エラーメッセージを表示させると、上矢印が
  エラーメッセージの両サイドに表示されるが、これは、symfonyの
  デフォルトである。これは変更することが可能。

  (プロジェクト名)/(アプリケーション名)/config/settings.ymlの以下の部分を
  置き換える。

      validation_error_prefix:    ' &darr;&nbsp;'
      validation_error_suffix:    ' &nbsp;&darr;'

  たとえば、上矢印としたい場合は、&uarrに変更すればよい。
  表示が不要な場合は、' '内をブランクとする。

Eclipse でエディタ画面を分割する方法

blog.syuhari.jp/archives/395

ログイン処理について

アプリケーションを作成後、
(アプリケーション名)/config/settings.ymlの
以下の部分を書き換える。

all:
  .settings:
    no_script_name:         on
    login_module:           login(モジュール名)
    login_action:           index(アクション名)

アクセス制御について

管理画面、マイページなどのように認証されたユーザで
特定の権限を持つユーザだけが閲覧や操作を行えるようにする。
symfonyは、アクセスしているユーザに関する情報は
ユーザークラス($this->getUser())が持っている。

symfonyは、user制御をデフォルトで持っている関係で
変数名でuserという名前は、使わないほうがよい。


以下のものがある。

・認証済みにする     $this->getUser()->setAuthenticated(true);
・未認証済みにする     $this->getUser()->setAuthenticated(false);
・認証済みかどうか     $this->getUser()->isAuthenticated();
・権限を追加する     $this->getUser()->addCredential("member");
                                  ()内の値は任意。
・権限を持つかどうか     $this->getUser()->hasCredential("member");
・権限を削除     $this->getUser()->removeCredential("member");
・全権限を削除     $this->getUser()->clearCredentials();

[使用例]
・member_idという名前でセッションに値を持たせる
    $this->getUser()->setAttribute('member_id', $member->getId(),sfConfig::get('sf_session_name'));
・セッションの値を取得    
    $this->getUser()->getAttribute('member_id');
・member_idというセッションを削除する。
$this -> getUser() -> getAttributeHolder() -> remove('member_id');

テンプレート側でユーザ情報やセッション情報を参照するためには、
以下のようにする。
    $sf_user->(メソッド名);

    以下でもよい。
    sfContext::getInstance()->getUser()->(メソッド名);

[記述例]
$sf_user->isAuthenticated();
sfContext::getInstance()->getUser()->isAuthenticated();

symfonyの場合、session_startの必要がない。
sf_session_nameを記述した時点で発行されていると理解してよい。


使用するためには、(プロジェクト名)/(アプリケーション名)/config内の
security.ymのis_secureをonにする。
default:
  is_secure: on

default:の部分をアクション名にすると、
そのアクション名にしか作用しない。

この設定は、security.ymlの設置してあるconfigフォルダが存在する
同一レベルの内容に作用する。このあたりをしっかり設定しないと、
意図した画面にたどり着けないという現象が発生するので、
注意すること。





部品化について

symfonyにはテンプレートやロジックを部品化する機能が提供されている。
主に、パーシャル、スロット、コンポーネントという機能を使用する。

1:パーシャル
  一番簡単な部品化の方法で、主にロジックを含まないテンプレートを部品化する際に使用する。

     <?php include_partial("モジュールディレクトリ名/ テンプレート名", "渡す値");?>の形で記述する。
  あらかじめ、モジュールディレクトリ名/templates/_テンプレート名.phpで
  テンプレートを作成しておく。

  [記述例]
  <?php include_partial("default/header")?>

  アプリケーション配下にパーシャルの内容を反映させたい場合もある。このような時は、
  (アプリケーション名)/templates配下に_テンプレート名.phpで作成しておく。
  この内容を呼び出すときは、モジュールディレクトリ名をglobalとする。

  [記述例]
  <?php include_partial("global/header")?>

    パラメータを受け渡すことができる。このときは、以下のように記述する。

  [記述例]
      <?php include_partial("global/header",array("name" => "aaa"))?>

      上記の場合は、_テンプレート名.php内に$nameを定義しておくと、
  その部分にaaaが表示される。

  パーシャルはbodyタグ内のみに使用できる。

2:スロット
  パーシャルはテンプレートの一部を部品化する機能だったが、
  スロットは、テンプレートから、レイアウトの内容を変化させるための機能である。

  ・テンプレート側(indexSuccess.phpなど)
        <?php slot("(スロット名)");?>
        内容
     <?php end_slot();?>

     ・layout.php((プロジェクト名)/(アプリケーション名)/templates配下)
          <?php include_slot("(スロット名)")?>

  上記の内容で指定する。layout.phpに限らず、他のテンプレートでも
  (_header.phpなど)でも可能。

  [記述例]
   ・テンプレート側(indexSuccess.php)
     <?php slot("title")?>
     <title>タイトル</title>
     <?php end_slot();?>
   ・layout.php
             <?php //include_slot("title")?>

     スロットがあるかどうかを判定するためには、has_slot("(スロット名)")を指定する。
  これを使用すると、上記の例の場合、view.yml内のタイトルと、スロットで指定したタイトルを
  切り替えて表示することが可能。この場合、layout.phpの内容を以下のようにする。

  <?php if(has_slot("title")):?>
      <?php include_slot("title")?>
  <?php else:?>
      <?php include_title() ?>
  <?php endif;?>

3:コンポーネント
  パーシャルにロジックが加わったものがコンポーネント。
  部品化したいが、その部品を作成するためにはデータベースから
  データを取得する必要がある場合に使用される。

   <?php include_component("モジュール名", "アクション名");?>の形で記述する。
   コンポーネント専用のモジュール名を作成することが多い。

  [記述例]
   <?php include_component("shared", "hoge");?>

   上記の記述例の場合、
   (プロジェクト名)/app/(アプリケーション名)/modules/shared/templates/
        内に_hoge.phpを作成する。
   
   同時に(プロジェクト名)/app/(アプリケーション名)
   /modules/(アクション名)/actions/components.class.php配下に関数を作成する。
   components.class.phpの名称は固定となる。

        クラス名は、(アクション名)Componentsとする。sfComponentsを継承する。

   関数名はexecute(include_componentの第二パラメータ)とする。

   [記述例]
      public function executeHoge()
      {
          $this -> comment = CommentPeer::getNewComment();
    }

  上記の記述例は、(プロジェクト名)/lib/model/CommentPeer.php内の
  getNewComment関数を呼び出す。

  データベースに関する記述については、
  (プロジェクト名)/lib/model/(テーブル名)Peer.php内に関数の形で記述する。
  上記の記述例でいうと、これをexecuteHogeから呼び出す形になる。
  _hoge.phpとexecuteHoge()はinclude_component("shared", "hoge");で同時に
  呼び出されると理解してもよい。



フロントアプリケーション名を省略してアクセスできない。

symfonyは、最初に作成したアプリケーションに限っては、
フロントアプリケーション名を省略してアクセスできるが、
省略してアクセスできない場合がある。

http://aaa.com/front/indexでアクセスできるケースが、
http://aaa.com/index.php/front/indexとしないとアクセスできない。

原因は、(プロジェクト名)/web/配下に.htaccessが存在しないため。
この.htaccessはプロジェクトを作成したときに作成されるが、
別のsymfony環境からFTPでコピーし、それをFTPで
アップロードした場合、.htaccessがコピーされないため。

対策としては、別のプロジェクトからコピーするか、
サーバ上で圧縮してからダウンロードし、それをアップロードして、
サーバ上で解凍するようにする。


2012年の流行注意、Webデザイン的トレンド10個まとめ 2012年の流行注意、Webデザイン的トレンド10個まとめ 64

photoshopvip.net/archives/34465

PHP用トラックバッククラス

phpspot.org/blog/archives/2006/05/php_44.html

ヘルパーについて

symfony のテンプレート内で使うことのできる関数で、
基本的にはhtmlタグを生成する時に使用する。

ヘルパーを使う利点は、HTMLのコーディング量を減らせる点にある。
html の中にphp コードを含む箇所が少なくなるため見通しの点で有利。

使用するためには、(プロジェクト名)/app/(アプリケーション名)/config/settings.yml内の
all:内のno_script_nameをonにする。

1:Linkヘルパー
    <a href=""></a>をあらわす。
  <?php echo link_to(”表示文字列”,”URL”,”オプション”);?>の形で記述する。

   GETで値を渡したいときは、以下のように記述する。
 <php echo link_to("TOP","/",array("query_string" => "id=2"));?>
    ただ、複雑になる場合があるので、従来のHTMLで書いたほうが
    楽になるケースがある。

 (1):ルーティングについて(2012/03/23追記)
     (プロジェクト名)/app/(アプリケーション名)/config/routing.yml内に以下のように指定し、
     sample:
       url: /hoge/test
       param: { module: sample, action: index }

   <?php echo link_to("ここをクリック","@sample")?>と記述すると、
   指定されたルーティング先に遷移する。<?php echo link_to("ここをクリック","/hoge/test")?>
    と指定されたのと同様。YAMLを編集しているので、symfony ccを忘れないように。

2:フォームヘルパー

  <form></form>をあらわす。
  <?php echo form_tag("モジュール名/アクション名",オプションを配列で指定) ?>の形で記述する。

  [記述例] 
  <?php echo form_tag("member/edit","method=post multipart=true class=simpleFrom") ;?>
  </form>タグは自分で記述する必要があるので注意すること。

  (1):submit
          <?php echo submit_tag("ボタンに表示する文字列",オプションを配列で指定 ?>の形で記述する。

    [記述例]
           <?php echo submit_tag("送信する")?>
            nameを指定したい場合は、以下のように記述する。
           <?php echo submit_tag("送信する",array("name" => "(指定したい名前)"));?>

      (2):input
            <?php echo input_tag("フォーム項目名", "セットする値", オプションを配列で指定); ?>の形で記述する。

           [記述例]
            <?php echo input_tag("nickname", "", array("class" => "long", "size" => "60"));?>

   (3):textarea
             <?php echo textarea_tag("フォーム項目名", "セットする値", オプションを配列で指定) ?>の形で記述する。

            [記述例]
             <?php echo textarea_tag("context","hello",array("row"=>"10", "cols"=>"60"));?>

  (4):radio
             <?
php echo radiobutton_tag("フォーム項目名", 値, チェックされているかどうか
             (
trueであればチェック、falseであればチェックなし)) ?>の形で記述する。

            [記述例]
             <?php echo radiobutton_tag("radio","2",true);?>

       (5):checkbox
             <?php echo checkbox_tag("フォーム項目名", 値, チェックされているかどうか(trueであればチェック、falseであればチェックなし)) ?>の形で記述する。

            [記述例]
       <?php echo checkbox_tag("checkbox","a");?>

       (6):select
            <?php echo select_tag("フォーム項目名", options_for_select(リスト表示する項目を配列で指定,
             選択状態にする項目の値);) ?>の形で指定

             [記述例]
              <?php $pref = array(1 => "北海道",2 => "青森",3 => "秋田");?>
              <?php echo select_tag("pref",options_for_select($pref,"2"));?>

             先頭にブランクを表示させたいときは、
     <?php echo select_tag("pref",options_for_select($pref,"",array("include_blank" => true)));?>
             と指定する。
     先頭に「選択してください」を表示させたいときは、
             <?php echo select_tag("pref",options_for_select($pref,"",array("include_custom" => "選択してください")));?>
     と指定する。

    (7):file
             <?php echo input_file_tag("フォーム項目名") ?>の形で指定する。

     [記述例]
      <?php echo input_file_tag("photo")?>

    (8):image(ボタンをイメージで指定するとき)
             <?php echo submit_image_tag("ボタンとして表示する画像のパス") ?>の形で指定する。

     [記述例]
             <?php echo submit_image_tag("/images/42.jpg")?>

input_tag,textarea_tagについては、そのままだと、idとnameが同じ名前になる。
別々の名前を指定したいときは、オプション配列内で指定する。
指定方法はsubmitの部分と同様とする。

3:カスタムヘルパー
  ヘルパー内で使用できる関数のようなものである。
  (プロジェクト名)/lib/helper/(ヘルパーファイル名)で定義し、
  use_helper関数で定義する。(use_helper("(ヘルパーファイル名)"の形)
  ヘルパーファイル名はxxxxHelper.phpのxxxxの部分を指定する。

  [記述例]
      use_helper("MyUtility");


CSS3で画像を装飾する。

thinkit.co.jp/story/2011/09/14/2282

Webフォントについて

thinkit.co.jp/story/2011/08/18/2233

symfony設定ファイルについて

yml形式で設定される。

\config配下に格納される形になる。
設定させたいファイルの一番近いconfigフォルダ内の
設定ファイルの内容が優先される。


最小単位はモジュール単位であるが、
ファイル単位で設定を有効にさせる場合は、
別の方法がある。

設定例
[settings.ymlの定義]
all:
  .globals:
    support_mail: mis018.enomoto@gmail.com
    image_types:
      1: gif
      2: jpg
      3: png

all:は環境キー名と呼ばれるものである。
以下のキー名が存在する。
default: symfony自身がデフォルトで持つ設定値のためのキー
all: 全環境共通のための環境設定キー
(環境名): 環境ごとのキー。標準ではprod,dev,testが想定されているが、
       独自設定も可能である。

.globals:は見出し行と呼ばれるものである。
ピリオドから始まり、名称は任意である。

support_mail:、image_types:、1:はキー名である。
配列のキーと同様である。

上記の値は、sfConfig::get('sf_キー値')の形で
引用できる。上記はプロジェクト全体に適用するときに使用。

[app.ymlの定義]
定義方法については、上記と同じ形で定義可能。
sfConfig::get('app_キー値')の形で引用可能。
アプリケーション単位で適用するときに使用する。

[module.ymlの定義]
定義方法については、上記と同じ形で定義可能。
sfConfig::get('mod_モジュール名_キー名')の形で引用可能。
アプリケーション単位で適用するときに使用する。

symfonyの環境は3つある。

symfonyに標準で設定されている環境名は、製品版のprod、開発環境のdev、テスト環境のtestである。

routing.ymlについて

$_GETで受けとるときの指定を行う。
(プロジェクト名)/(アプリケーション名)/config配下に存在する。

[指定例]
reply_add:
   url: /reply/input/:id
   param: {module: reply, action: input}

reply_addの部分は任意の名前。ただし、重複は不可。
urlは、accessされるURL名
module:の後はモジュール名(リダイレクト先のモジュール名)
action:の後はアクション名(リダイレクト先のアクション名)
urlとparamの先頭2桁は必ず半角スペースを2桁入れる。
url:とparam:の後は半角スペースをひとつ空ける。
この指定は、link_toヘルパーを使用または、
aタグを使用してパラメータを省略して受け渡したいときは
必ず必要になる。

上記の例は、replyモジュール内(replyフォルダ)のaction.class.php内の
executeInput内で$_GETで受け取る変数をidという項目とする。
この例は、URLがモジュール名とアクション名と同じになっているが、
URLを別のものにすると、リダイレクトすることができる。

複数のパラメータを受け渡したいときは、
続けて記述する。
[指定例]
reply_add:
   url: /reply/input/:id :id2
   param: {module: reply, action: input}

routing.ymlの記述は、重複する記述
(reply_add:の部分)がある場合、
最後に書かれたものが優先されるので注意すること。


重複して設定すると、予期しない動作になることがある。
つまり、以下のような設定は予期しない動作になることがある。

pastarticle:
  url:   /index/contri/:pastymd
  param: { module: index, action: contri }
categorys:
  url:   /index/contri/:category
  param: { module: index, action: contri }

上記の場合、param側のモジュール名とaction名が重複しているため、
pastymdなのかcategoryなのかがアクション側で判定ができない。
切り分けたい場合は、わたってきた内容で判断するか、
従来どおり、aタグで記述するようにする。

初期値として書かれているものは
一番最後にするのが望ましい。

routing.ymlでURLの制御ができるのは、
フロントコントローラー以降のURLなので注意すること。

フロントコントローラーのURLを制御するときは、htaccessを制御する。


[CSS]box-shadowを使って、紙がふわりと浮かんだようなエフェクトをつけるスタイルシートのまとめ

coliss.com/articles/build-websites/operation/css/css3-box-shadows-effects-by-paulund.html

IEでCSS3を実現させる方法(Filter)

thinkit.co.jp/story/2011/06/20/2168

linear-gradient使用例

www.halawata.net/2011/10/css3-linear-gradient/

モデルによるCRUDについて

1:Create(insert)について

[コーディング例]
[action.class.php内]
public function executeIndex() {
   $comment = new Comment();
   $comment -> setNickname("test");
   $comment -> setContent("test");
   $comment -> save();
    return sfView::SUCCESS;
}

[indexSuccess.php内]
特にコーディングなし。

テーブル名でインスタンスを作成し、
set(項目名)で値をセットする。その後、saveメソッドでテーブルに
書き込む。

created_atという名前があった場合、自動的に登録日時が登録される。
updated_atという名前があった場合、自動的に更新日時が登録、更新される。

created_at,updated_at両方が存在した場合、
insert時には両方に同じ値が入り、update時は updated_atのみに
値がセットされる。

updated_atの場合、値が変わったときのみ、更新日時が
変更される。
updateを同一の値で複数回実行しても更新日時は
変わらない。

2:Read(select)について

[コーディング例]
[action.class.php内]
public function executeIndex() {
    $c = new Criteria();
    $c->add(CommentPeer::NICKNAME,'test');
    $c->add(CommentPeer::CONTENT,'test');
    $this->comment = CommentPeer::doSelect($c);  // assignする。
    return sfView::SUCCESS;
}

[indexSuccess.php内]
<?php foreach ($comment as $v):?>

<?php print_r($v->getid())?>
<?php print_r($v->getnickname())?>
<?php print_r($v->getcontent())?>
<?php endforeach?>

3:Updateについて
[action.class.php内]
public function executeIndex() {
    $comment = CommentPeer::retrieveByPk(1);
    $comment -> setNickname("変更");
    $comment -> setContent("変更");
    $comment -> save();
    return sfView::SUCCESS;
}

[indexSuccess.php内]
特になし。

4:Deleteについて
[action.class.php内]
public function executeIndex() {
      $comment = CommentPeer::retrieveByPk(4);
      $comment -> delete();
      return sfView::SUCCESS;
}

[indexSuccess.php内]
特になし。



add,addAnd,addOrメソッドについて

actions.class.php内のpublic function executeIndex内の
add,addAnd,addOrメソッドの書き方は注意を要する。

[例1]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> add(CommentPeer::ID,"2");
$c -> add(CommentPeer::ID,"3");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、最後のaddメソッドが有効になる。
where ID = "3"と書いたのと同じになる。

[例2]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> addAnd(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、ID = "1" AND ID = "2"と書いたのと同じになる。
$c -> addAnd(CommentPeer::ID,"1");
$c -> addAnd(CommentPeer::ID,"2");
と記述しても同様。

[例3]
$c = new Criteria();
$c -> add(CommentPeer::NICKNAME,"bbb");
$c -> add(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、NICKNAME = "bbb" and ID = "2"と書いたのと同じになる。
(項目が異なるときに限ってandで結合される)

上記は、以下のように記述しても同じ結果が得られる。
$c = new Criteria();
$c1 = $c -> getNewCriterion(CommentPeer::ID,'2');
$c2 = $c -> getNewCriterion(CommentPeer::NICKNAME,'bbb');
$c1 -> addAnd($c2);
$c -> add($c1);
$this -> comment = CommentPeer::doSelect($c);

[例4]
$c = new Criteria();
$c -> add(CommentPeer::NICKNAME,"bbb");
$c -> addOr(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記は例3と同じ結果となる。
項目が異なると、addOrの指定は無効になり、addAndを
指定したのと同じになるようである。

[例5]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> addOr(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、where ID = "1" or ID = "2"と書いたのと
同じになる。

[例6]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> addOr(CommentPeer::ID,"2");
$c -> add(CommentPeer::NICKNAME,"bbb");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、where (ID = "1" or ID = "2") and NICKNAME = "bbb"と
書いたのと同じになる。
$c -> add(CommentPeer::NICKNAME,"bbb");を
$c -> addAnd(CommentPeer::NICKNAME,"bbb");または、
$c -> addOr(CommentPeer::NICKNAME,"bbb");と指定しても同様。

addメソッドを複数指定した場合は、最終行のみ有効。
addAndを指定したからといって、and条件で結合されるとは限らない。
addOrを指定したからといって、or条件で結合されるとは限らない。

上記の点に注意すること。



旧バージョンのCentOSをダウンロードする方法

vault.centos.org/

CentOS5をFDインストールする方法

blogs.yahoo.co.jp/iamhiroyuki/3524273.html
d.hatena.ne.jp/grgrjnjn/20090110/1231573267

DOS起動ディスクでUSBメモリーを認識させてCDを起動させる方法

nyanpokorin.blog55.fc2.com/blog-entry-8.html

Dreamweaverの便利なコマンドや拡張機能のまとめ

webdrawer.net/tools/dwextention.html#sec05

[JS]スクロール時に面白いエフェクトを与えるjQueryのプラグインのまとめ

coliss.com/articles/build-websites/operation/javascript/jquery-plugins-for-scroll-effects.html

さまざまなOSのインストール“USBメモリ”を手軽に作成できる「UNetbootin」

www.forest.impress.co.jp/docs/review/20090907_312720.html

CentOS – USBデバイスからインストールする方法

www.mk-mode.com/wordpress/2010/01/11002001/
nobuneko.com/blog/archives/2010/10/centos_55usb.html

外部キーについて

複数のテーブルの項目を共通の項目で結合し、
一致するデータを引用する時に使用する。

定義は、schema.ymlを手修正する。(以下は設定例)

comment_id:
      type: INTEGER
      required: true
      foreignTable: comment
      foreignReference: id

comment_idという項目に、commenテーブルのid項目を
結合させる。



プロフィール

e.swan

Author:e.swan
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。