公開日 2018.1.30更新日 2018.1.31カテゴリ:CakePHPタグ:PHP,CakePHP,3.5,QueryBuilder,QueryExpression,ConnectionManager
![CakePHP3でのクエリビルダ記法まとめ[QueryBuilder/QueryExpression]](https://cdn-ak-scissors.b.st-hatena.com/image/square/026d51dfd392c81e1845aa6d923567f7f6c8e68b/height=288;version=1;width=512/https%3A%2F%2Fwww.ritolab.com%2Fimages%2Fposts%2F67%2Fthumbnail.png)
CakePHP Advent Calender 2019 最終日の記事です。 SREチームの金澤です。 2019/12/16にCakePHP4がリリースされました。 ランサーズでは、CakePHP2.10の現システムをCakePHP3に移行中ですが、 同時に、管理画面のソースを別リポジトリに分割し、 CakePHP4で新規構築するプロジェクトも進めています。 CakePHP3で開発をしていたのですが、 CakePHP4が正式リリースされたので、CakePHP4にmigrateしました。 今回、その手順を記録しておきたいと思います。 composer.jsonのCakePHP4対応 CakePHP4.0にアップグレードするためにcomposer.jsonを修正します。 案の定ですが、単純に "cakephp/cakephp": "^4.0", として、composer updateしても依存
というわけでCakePHP2の時にcacheのせいで断念してた、管理画面をプラグインで管理に再チャレンジ プラグインを作成する 手動でも設置可能そうだが、色々設定がめんどくさそうなのでとりあえずbakeで作成してみる。 [fusic@localhost hoge]$ bin/cake bake plugin Admin (略) File `/var/www/html/hoge/composer.json` exists Do you want to overwrite? (y/n/q) [n] > y Wrote `/var/www/html/hoge/composer.json` Error: Could not run `composer dump-autoload`: とCakeが書き換えてしまってるので(多分バグ?)jsonファイルを手動で "suggest": {}, に書き換え
CakePHP 3系にて、アソシエーションを利用する場合に便利なmatchingメソッド。 便利に活用させていただいていたのですが、利用していく上で、複数の条件を指定する場合において少し悩んだので、備忘録として。 使い方まずは通常の使い方から。 matchingは、多対多(belongsToMany)の関係を持つ2つのテーブルにおいて、片一方のテーブルに紐づくデータによって、もう片一方のテーブルから取得するデータをフィルタリングするメソッドです。 例えば、ブログの記事情報を格納するPostsテーブルとブログのタグ情報を格納するTagsテーブルが存在する場合、この2つのテーブルは多対多の関係(ブログは複数のタグを持ち、タグは複数のブログに割り当てられる)となりますが、特定のタグを持つブログのみを絞り込んで取得したい場合などに、このmatchingメソッドの出番となります。 特定のタグを持つブ
こんにちはPHP Matsuriでは色々とお世話になってる@kozoです。 この記事は2014年CakePHP Advent Calendarの11日目です CakePHP 3系からモデルは大きく変わり、戻り値が配列からオブジェクトになるとか、Modelが1ファイルだったものがTableとEntityに分かれるなど色々変わって非常に便利になってます! 今回は大きく変わったもう1個のfind(SELECT句)のSQLの組み立て方法について調べてみました。 find QueryBuilderの開始地点になり、SELECT用のQueryオブジェクトが生成されます。 QueryオブジェクトをメソッドチェーンでつなげることでSQLを組み立てます。 // 基本的な使い方 $this->Users->find() ->where(条件A) ->where(条件B) ->order(ソート条件A) ->o
テーブル「persons」を作成後、bakeでmodelを作成しています。 bakeの実行例(linux): bin/cake bake model persons findメソッドの第1引数に‘all’を使用して全データを取得するソースコード「/src/Controller/PersonsController.php」は下記のとおりです。 URL「/persons/index」を指定した場合に、findメソッドで取得したデータを表示するように記述しています。 URL「/persons/index」のテンプレートは「/src/Template/Persons/index.ctp」で記述しています。 /src/Controller/PersonsController.php: <?php namespace App\Controller; use App\Controller\AppCont
CakePHPにおけるパフォーマンスチューニングとは パフォーマンス向上するための方法は大まかに分けて2種類ある 1. ボトルネックとなる処理を探し当てて改善する方法 コードを修正する、パラメータをチューニングするなど。 2. キャッシュを使う方法 処理実行結果をキャッシュに保存することで、2回目にアクセスしたときにその処理を通らずに処理結果を返す事ができる。 DBのパフォチュー 1. 発行しているクエリ数を減らす これをViewに貼ればカウントできる。減らせるクエリは減らす。 2. findのパフォチュー 極力以下を利用する。 a) 基本的にqueryメソッドが最強。ただし... コードの可読性が下がるので大量データを取得する必要があるときに利用。場合によってはfieldで取得するより早い。 ✕ $this->Hoge->find('all'); ◯ $this->Hoge->query
// hoge.json なURLを有効にする Router::parseExtensions('json'); <?php App::uses('AppController', 'Controller'); class ApiController extends AppController { public $uses = array('Post'); // RequestHandlerコンポーネントを使用 public $components = array('RequestHandler'); public function search() { $this->set(array('Posts'), $this->Post->find('all')); $this->set(array( '_serialize' => array('Posts'), '_jsonp' => true
業務では使わなかったのですが、JSON型式で返す方法も紹介しておきます。 1. app/Config/routes.php を書き換える 先頭の行に以下を追加します。 Router::parseExtensions('json'); 以下のように並べると、xml と json の両方が使えます。 Router::parseExtensions('json','xml'); 2. app/Controller/AppController.php を書き換える RequestHandler コンポーネントを有効にすること、ページングの数を多めにとっておきます。 class AppController extends Controller { public $components = array('RequestHandler'); public $paginate = array( 'limi
CakePHPでは一つのコントローラの中に通常のアクションと管理者用アクションとを定義できます。例えばコントローラ名がpostの場合、URLは以下のようになります。 ・通常 http://www.example.com/post ・管理者用 http://www.example.com/admin/post この機能を使う手順は以下になります。 1.CAKE_ADMINを有効にする app/config/core.phpのCAKE_ADMIN定義を有効にします。(デフォルトはコメントアウトされている) /** * Uncomment the define below to use cake built in admin routes. * You can set this value to anything you want. * All methods related to the ad
この記事では、Google Analytics APIを CakePHP3用に作り変えて、Analyticsのレポートデータを取得する方法を解説します。 Google Analytics APIのベースとなるサンプルソースは、下記のものです。 はじめてのアナリティクス Reporting API v4: ウェブ アプリケーション向け PHP クイックスタート https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/web-php?hl=ja これは、PHP用のサンプルソースですが、このままでは CakePHP3で動かすことは出来ないため、これを CakePHP3で動作するように変更する方法の解説です。 また、カスタマイズ方法も解説します。 ただ、最初は、サンプルソースとして提示してある生の
スマートフォンアプリのバックエンドや、JSフレームワークのバックエンドとして、JSONやXMLを返すAPIをサーバサイドで実装する機会は多いと思います。 今回は、ComposerとCakePHP2.4、FriendsOfCake/crudを使って爆速で実装してみます。 できあがりは、これ slywalker/cakephp-app-api_sample CakePHPのインストール まず、プロジェクトのディレクトリにcomposer.jsonをつくります composer.json { "require": { "pear-cakephp/cakephp": "2.4.*" }, "config": { "vendor-dir": "Vendor/" }, "repositories": [ { "type": "pear", "url": "http://pear.cakephp.org
この記事は「 PHPカンファレンス関西2015 - 関西最大のPHPイベントは5月30日(土)開催! 」の リレーブログ のエントリーです。 昨日は、@tanakahisateru さん はやいで! つよいで! ワテらのPHP!! #phpkansai - なんたらノート第三期ベータ でした。 初物尽くしの今開催、はたして… 私は第1回開催から毎回実行委員として参加させていただいていますが、第5回を迎える今年の開催は初めての試みが多く行われています。 新実行委員長 初会場 初有料化 ただでさえ開催に向けて多くの課題の解決をしていかねばならないスケジュールに加え、今までのノウハウが活かせない環境への対応。年々高まる参加者のクオリティへの期待。 はたして今開催は無事終えることができるのだろうか? そもそも第1回はすべてがチャレンジ そもそものはじまりは、「関西にもPHPカンファレンスを!」との
CakePHP 3, Bootstrap Helpers CakePHP 3.x helpers for the Bootstrap 3 HTML, CSS & JS framework by @Holt59. Code on GitHub Download (.zip) Dependencies This repository contains a set of helpers that will help you combine CakePHP and Bootstrap. These helpers do not require any dependencies except the two obvious ones: CakePHP 3.x The helpers have been developped since CakePHP 3 beta, and will be kept
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く