タグ

modelとDBに関するkathewのブックマーク (8)

  • むしの手記。 » Cakephpで普通にINNER JOINする

    タイトルが微妙すぎて困る! CakePHPのアソシエーションを使うと、基LEFTでテーブルをJOINしてfindなどされると思います。 これをINNER JOINにしたい!といっても、hasOneとbelongsToでtype=>”INNER”を指定すればINNER JOINできるのは周知の事実でございますが、hasManyでできねーのかよ!って思って触ってたら案の定できたのでメモ。 まぁSum limitedさんところで書いてある方法にほとんど近いのですが、beforeFindに書くと別のfindでも使ってしまうし、うーんと思ってたんだけど、findAllじゃなくてfindを使えば大丈夫そうなんですよ。 テーブル mysql> desc users; +----------+------------------+------+-----+---------+-------------

  • tsuchinokopro.com

    tsuchinokopro.com 2018 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor the domain owner maintain any relationship with the advertisers. In case of trademark issues please contact the domain owner directly (contact information can be found in whois). Privacy Policy

  • CakePHP で join をやりたかったメモ。 | 自作自演

    ※この記事は 2010年に書かれた古い記事です。 「CakePHP 複数テーブル」でぐぐると3つ、ちょっとずつ違う話が出てくる。 1. コントローラの中で複数のモデルを使いたい。 コントローラの冒頭でvar $uses = array("Table1", "Table2", ...);$components、$helpers、$uses :: コントローラの属性 :: コントローラ :: CakePHPによる開発 :: マニュアル :: 1.2コレクション :: The Cookbook 2. モデルを結び付けたい。 hasOne とかそういうもの。 関連: モデルを結びつける :: モデル :: CakePHPによる開発 :: マニュアル :: 1.2コレクション :: The Cookbook 3. join を使いたい。 使えるのは inner join と left join。 f

  • モデル - 2.x

    モデル¶ モデルはアプリケーションのビジネスレイヤーを担当するクラスです。 すなわち、業務ドメインにおけるデータやその妥当性、トランザクションや 情報ワークフローの過程で発生する全てのことがらを管理する役割を負うということです。 モデルクラスは通常はデータを表すもので、 CakePHP のアプリケーションではデータアクセスに使われます。 具体的に言うと、モデルはデータベースのテーブルを表しますが、それに限らず ファイルや外部ウェブサービス、iCal のイベントや CSV ファイルの行など、 データを扱うあらゆるものに使われます。 ひとつのモデルを他のモデルと関連づけることができます。 例えば Recipe はそのレシビの Author と関連づけられたり、 レシピの Ingredient と関連づけられたりします。 このセクションでは、モデルでどのような機能を自動化することができるか、 そ

  • データを保存する - 2.x

    ほとんどの場合、このような形式を意識することはありません。 CakePHP の FormHelper やモデルの find メソッドは 全てこの形式に従っています。 FormHelper を使っていれば、 $this->request->data で簡単にこの形式のデータにアクセスできます。 データベースのテーブルにデータを保存するために CakePHP のモデルを使った 簡単なサンプルを以下に示します。 public function edit($id) { // フォームからポストされたデータがあるかどうか if ($this->request->is('post')) { // フォームのデータを検証して保存する... if ($this->Recipe->save($this->request->data)) { // メッセージをセットしてリダイレクトする $this->Sess

  • [CakePHP] トランザクションを利用する | Moonmile Solutions Blog

    トランザクションを利用する…が、WEB系の場合は、ワンコールのトランザクションしか使えないので、複数のコール/Web APIにまたがる場合は、2フェーズコミットの方法を取る。まあ、チケット予約とかのように普通はダーティコミットの方式がパフォーマンスがよい。最後にチェックを入れて、整合性がなければ/既に予約済みだとかの場合は、エラーにしてしまう方式。社内業務の場合は、それほどパフォーマンスを必要としない or 途中の入力を破棄されるほうが痛い場合は、一時入力を保持する方式でセッションを作る。 ここはワンコールのトランザクションで。 ■Model Model/AppModel.php を書き換え class AppModel extends Model { var $db ; function begin() { $db = ConnectionManager::getDataSource($

  • CakePHPでトランザクション - Qiita

    CakePHPでトランザクションを使う方法をネットで検索したところ、 古いバージョンばかりヒットするのでメモしておきます。 AppModel.phpに下記を追記します。 function begin() { $dataSource = $this->getDataSource(); $dataSource->begin($this); } function commit() { $dataSource = $this->getDataSource(); $dataSource->commit($this); } function rollback() { $dataSource = $this->getDataSource(); $dataSource->rollback($this); }

    CakePHPでトランザクション - Qiita
  • 『cakePHP+MySQLでトランザクション』

    cakePHPMySQLと相性がいいが、トランザクションにちょっと癖がある。 通常、 $this->Model->begin(); でトランザクションが開始されるのだが、cakePHPでは単純に BEGIN というSQLを流しやがる。PostgreSQLならいいが、MySQLじゃだめじゃん…。 というわけで以下のソースをAppModelに追加すると正常にトランザクションができる。 function begin() { $db =& ConnectionManager::getDataSource($this->useDbConfig); $db->begin($this); } function commit() { $db =& ConnectionManager::getDataSource($this->useDbConfig); $db->commit($this); } fun

    『cakePHP+MySQLでトランザクション』
  • 1