カテゴリー
コンピューター

CakePHP2 のアソシエーション!モデルを連携させて複数テーブルからデータを取得する勉強します!

CakePHP のバリデーションの基本を勉強します。 | oki2a24 の次の投稿となります。

以前ひとつのテーブルからのデータ取得を行いました。それも、モデルなしで。今回はモデルをしっかり使って、そしてテーブルは複数を連携させて、という例となります。2つのテーブルを使用しますが、連携のさせ方を網羅させて、しらみつぶしに動きを調べようと思います。

今回は、hasAndBelongsToMany を除いた hasOne、belongTo、hasMany の3パターンを取り扱います。

ポイント

  • モデルに連携したい相手のモデルを書く。書き方は、hasOne、belongTo、hasMany、hasAndBelongsToMany の4種類ある。
  • hasOne 1:1。相手テーブルに自テーブルの id 値を設定します。例、users テーブルの1つの行は、profiles テーブルの1つの行を持っている。
  • belongTo n:1。自テーブルに相手テーブルの id 値を設定します。例、users テーブルの1行は、recipes テーブルの多くの行を持つことができる。
  • hasMany 1:n。相手テーブルに自テーブルの id 値を設定します。例、recipes テーブルの多くの行は、users テーブルの1つの行に所属している。
  • belongTo と hasMany はどちらも1つに対して複数の対応ですが、1:n ( hasMany )の場合は1つの行に対して複数の行が紐づいた状態でデータを取得できます。一方、n:1 ( belongTo ) の場合は1つの行に対して1つの行が紐づいた状態でデータを取得できます。
  • モデルの連携は適当では駄目です。エラーとなります。または、変なデータが取れると思います。
カテゴリー
コンピューター

CakePHP2 のバリデーションの基本を勉強します。

CakePHP の FormHelper::input の使い方とバリデーションとの関係を勉強します♪ | oki2a24 の続きの投稿となります。

バリデーション、つまり入力チェックの基本を勉強します。

ポイント

  • モデルにバリデーション情報を書きます。
  • 書き方。
    public $validate = array(
    フィールド名。つまり DB のカラム名‘ => array(
    ‘rule’ => ‘notEmpty とかルールを記入‘,
    ‘message’ => ‘エラーメッセージ
    ),
    );
カテゴリー
コンピューター

CakePHP2 の FormHelper::input の使い方とバリデーションとの関係を勉強します♪

CakePHP。モデル未使用でデータベースデータ操作の基本を学習します♪ | oki2a24 の次の投稿となります。

バリデーションを設定したのに、メッセージが表示されません!本を読んでも、「表示されるはず!」と明記されています。アイエエ!ナンデ!?調べました。

ポイント

  • ビューで $this->Form->input() を使えばバリデーションのエラーメッセージを表示できる。
  •  ビューで $this->Form->text や $this->Form->text を使っても、バリデーションのエラーメッセージは表示されない。
  • $this->Form->error() でエラーメッセージを表示できる。みたいですけれど、どうにもまだうまくいきません><。

以下、FormHelper::input の詳細です。

カテゴリー
WordPress

Jetpack プラグインをアップデートしたら、WordPress が真っ白になりました!Sharekoube が原因!ナムアミダブツ!

アイエエエ!?真っ白ナンデ!?昨日の午後から自分のサイトにアクセスしようとしてもサーバーエラーとなってまったく反応してくれません。復活するまでの足跡をメモします。

その前に、覚えておきたい心得

  • おかしくなった直前の操作に注目すること!

なぜこのようなことをあえて書くかといいますと、自分のブログにアクセスできなくなってからまずやったことが、Apache、MySQL、サーバの再起動だったからです。ぜんぜん見当違いでした。

WordPress が真っ白となった原因

WordPress › Sharekoube « WordPress Plugins のバージョン0.8と、WordPress › Jetpack by WordPress.com « WordPress Plugins のバージョン1.6.1の相性が悪かった。

カテゴリー
コンピューター

CakePHP2。モデル未使用でデータベースデータ操作の基本を学習します♪

CakePHP の scaffold 応用編を通して使いどころを少しだけ考えます! | oki2a24 の次の投稿となります。

コントローラーとビューを使ってテーブルデータ操作の基本を学習します。モデルの作成は行いません。

ポイント

  • DB データの登録、検索や削除などの操作は、コントローラーから行なう。モデル、ではない。
  • $this->モデル名->関数、で操作する。DB にテーブルがあれば、モデルはなくても大丈夫です。
  • 検索の find 関数の第1引数による動きまとめ
    • find(‘all’); 全レコードを得ます。
    • find(‘first’); 最初の1レコードを得ます。
    • find(‘list’); レコードのリストを得ます。
    • find(‘count’); レコード数を得ます。
  • find 関数で得られる結果の構造は第1引数のタイプによりそれぞれ異なります。
  • find 関数第2引数の conditions で検索条件を指定できます。
  • 削除。delete(削除する行の id )
  • 挿入または更新。save(保存するデータ)
カテゴリー

特 上 生 寿 司 625円

P7131561.JPG

半額で、6 2 5 円ですよ!!!!!

カテゴリー
コンピューター

CakePHP2 の scaffold 応用編を通して使いどころを少しだけ考えます!

CakePHP の scaffold を体験します♪ | oki2a24 の次の投稿となります。

scaffold を上書きして捨てていく開発、scaffold を使用して見た目だけ変える開発ができるようなので、見てみます。

ポイント

  • scaffold のレイアウトを修正するには、cake/sample/lib/Cake/View/Scaffolds/ フォルダのテンプレートをコピーして、cake/sample/app/View/Scaffolds/ フォルダに入れて、これを修正します。
  • scaffold のアクション、index、add、edit、view、delete、はオーバーライドできます。
    ※継承した子クラスで親クラスのメソッド、プロパティを上書きすることです。
カテゴリー
コンピューター

CakePHP2 の scaffold を体験します♪

CakePHP の FormHelper::label 関数の使い方を学びます! | oki2a24 の次の投稿です。

scaffold、スキャフォルドについてです。

変わった単語なので辞書で調べました。「足場」「作業台」「絞首台」。3つ目。。。ま、まあ、それはともかく、コントローラーにスキャフォルドの設定を1行だけ行なえば、ビューはもちろん、モデルすら用意する必要なく、データベースを管理するためのちょっとしたシステムを自動的に作れるという優れものなのだそうです。

では、やってみましょう。

ポイント

  • コントローラーに public $name を設定します。
  • コントローラーに public $scaffold; を書きます。
カテゴリー
コンピューター

CakePHP2 の FormHelper::label 関数の使い方を学びます!

CakePHP の View 内のフォルダ名が規約違反でも通ってしまう問題を解決しました! | oki2a24 の次の投稿になります。

CakePHP Form ヘルパーによるフォーム生成を勉強します♪ | oki2a24 での課題、「$this->Form->label(name 属性で指定される名前) で「name 属性で指定される名前」を設定すると、画面に表示される文言も「name 属性で指定される名前」となってしまい、全角でラベルが表現できません。困りました!」を解決しました!やったね!です♪

ポイント

  • ラベルタグ生成
    $this->Form->label(name 属性で指定される名前, ラベル名)
カテゴリー
コンピューター

CakePHP2 の View 内のフォルダ名が規約違反でも通ってしまう問題を解決しました!

CakePHP で DB データを表示するシンプルな例!モデルなしで勉強です! | oki2a24 の続きとなります。

わかりました!

前回、View フォルダ内に作るフォルダ名が単数形でないとエラーとなる不思議現象が発生しましたが、原因がわかりました!

まとめ

  • コントローラーファイルの public $name には複数形を指定します。
  • つまり、public $name にはコントローラー名が入り、コントローラー名とは、複数形です。
  • ちなみに、モデル名は単数形、ビューのフォルダ名は複数形です。