タグ

QiitaとCakePHPに関するsatoshieのブックマーク (20)

  • CakePHPにIDE Helperを導入しIDE補完で開発効率を上げる⚡️【CI連携】 - Qiita

    こんにちは、みやがわです。 CakePHPで開発を行う上で必ず導入したいライブラリの一つである IDE Helper をご紹介します。 環境 CakePHP: 4.4.15 ( 3版もあります ) PHP: 8.1.20 IDE Helperとは IDE Helperとはその名の通りIDEやエディタを補助するためのプラグインで、主に補完の面でサポートします。 PHPの言語仕様に対応しているIDEでは最初からある程度の補完はされますが、扱うフレームワークがマジックメソッドを持っていたり特殊なインスタンス参照を行っている場合には適切な補完を表示することが出来ません。 CakePHPの場合、そういった補完を適切に表示するためにはクラスのPHPDocに対して @propertyタグを追加する必要があります。 例) $this→loadComponent() で読み込んだクラスの補完を効かせるために

    CakePHPにIDE Helperを導入しIDE補完で開発効率を上げる⚡️【CI連携】 - Qiita
  • [CakePHP2] カスタムファインダーの使い方と利便性 - Qiita

    カスタムファインダーとは カスタムファインダー とは Model が提供するファインダーの中で find('all') でも find('first') でも find('list') でも find('count') でも find('threaded') でも find('neighbors') でもない独自のファインダーのことです。 たとえば、データベース中から有効なユーザーのみを取得したいとします。こうした場合にカスタムファインダーを活用することができます。頻繁に使用する検索条件であればコードの重複を削減できますし、そうではなくて、あるアクション固有の処理だったとしても CakePHP ではコントローラーをスリムにしてモデルを太らせるのが鉄則 1 です。 カスタムファインダーを作成する では、さっそくカスタムファインダーを作ってみましょう。有効なユーザーのみを取得する find('

    [CakePHP2] カスタムファインダーの使い方と利便性 - Qiita
  • [CakePHP3]現場で使えるCollectionクラスの15選 - Qiita

    CakePHP Advent Calendar 2017、第4日目です! 私は最近だとCake3を利用しているのですが、触っていた期間でいうとまだまだCake2の方が長い〜と思います。 なので、昨日のカスタムファインダーのエントリはとても興味深かったです・・・数えるほどしか使ってない(書いていない)機能だったので、改めて理解した上で機会があれば活用してみたいと思いました。 Collection の話をします! さて、今回はCakePHP3の話になります。 もともとCake2からHashクラスは大好きなのですが、Collectionは同じく「集合をよしなに扱う便利クラス」になります。 ORM層に見られるように「プリミティブな連想配列を脱却した良さを分かち合おう」というCake3時代の思想を、色濃く感じることができる場面です。 ドキュメントはこちら: https://book.cakephp.

    [CakePHP3]現場で使えるCollectionクラスの15選 - Qiita
  • 【CakePHP3】バリデーション・アプリケーションルールについて - Qiita

    社内用にまとめた内容の転載。 ココらへんの話をします CakePHP3の値チェックは2段階! ValidationとValidation Provider Application Rules Entityに渡す値のチェック(検証)は2段階で行われる CakePHP3では、従来とは大幅に「バリデーション」の機構が変更されました。 これまでModel::save()やModel::delete()時に暗示的に、もしくは明示的にModel::validate()をした際に走っていたデータの検証が、次のような2ステップに分けて扱われます。 Entity作成・更新時に行われる「validation」 Databaseに作用する(insert, update, delete)際に行われる「(application | domain) Rule」 この変化はパッと見とっつきにくいし、 なんぞ…という感じ

    【CakePHP3】バリデーション・アプリケーションルールについて - Qiita
  • 【CakePHP】バリデーションメソッドをまとめた - Qiita

    #はじめに# CakePHP(3.8)のバリデーションメソッドまとめです。 バリデーションの基は、Validationクラスのインスタンスに、チェーンメソッドで適応したルールを記述していきます。 use Cake\Validation\Validator; $validator = new Validator(); $validator ->requirePresence('age') ->notEmpty('age', 'このフィールドに入力してください') ->nonNegativeInteger('age', '年齢は数字で入力してください。') Validatorクラスは、基的にはValidationクラスのラッパーになっています。(例外もあります) そのため、実際にどのような処理が行われるかを知るためには、Validationクラスを覗く必要があります。 public fun

    【CakePHP】バリデーションメソッドをまとめた - Qiita
  • CakePHP3のChronosの機能紹介 - Qiita

    CakePHP3のChronosの公式ドキュメントを翻訳したので、 その機能についてご紹介します。 以前の記事CakePHP3公式ドキュメントの翻訳が一石N鳥だった件でもご紹介しましたが、 私は「CakePHP3翻訳会」への参加を通じて翻訳を行なっていて、 その中のひとつとしてChronosを翻訳しました。 Chronosとは Chronosは、CakePHP3.2から導入された、日付時刻を扱うライブラリです。 公式のリリースには以下のように書いてあります。 Carbon ライブラリを Chronos に置き換え Carbon ライブラリは cakephp/chronos に置き換えられました。この新しいライブラリは Carbon のフォークで、依存関係は追加されていません。カレンダーのdateオブジェクト、イミュータブルなdateオブジェクトとdatetimeオブジェクトを提供します。

    CakePHP3のChronosの機能紹介 - Qiita
  • CakePHP4 で Fabricate を使ったテストを書く - Qiita

    資産価値の高いテストを書くためにFabricateを使い始めました この記事はとても共感出来る記事です。 開発作業の最初や途中で UnitTest を入れるぞっと盛り上がったときは、テストを書くのですが、後ほど負担になって UnitTest を実行しなくなるっというケースが多々あります。 (特にフェーズ1リリースが終わって、次の開発まで期間があく案件のケースで多発します。。。) 今後、良いテストを書くために CakePHP4 で Fabricate を導入する手順を残します。 この記事でわかること CakePHP4 へ Fabricate を導入する手順。 この記事内のソースは以下で公開しています。 https://github.com/katsuhiko/cakephp-vue-study 事前準備 CakePHP4 プロジェクトは以下の記事で作成して、Docker で動かしつつ、最低限

    CakePHP4 で Fabricate を使ったテストを書く - Qiita
  • ORM order句でfieldを使ったソート - Qiita

    $test = $this->Hoge ->find() ->order([ 'field(id, 3, 5, 7)' => 'DESC' ]); order句の連想配列は、keyがソート対象、valueがソート条件となっています。 fieldの第一引数には、ソート対象とするカラムを指定します。 今回の場合、idを対象としています。 第二引数以降は、第一引数に指定したカラムに存在する値を指定します。 今回はidカラムに存在する3,5,7を対象としています。

    ORM order句でfieldを使ったソート - Qiita
  • テストデータを簡単に作る方法 - Qiita

    CakePHP Advent Calendar 2017の16日目です。 @keisukefunatsu さんの昨日の記事は、codeceptionをcakephp3で扱ってみるチュートリアルでした。 CakePHPで自動テストを書いていますか? ちょうど1週間前に9日目の記事として、CakePHP3 のアプリケーションを Behat でテストする(update編)を書きました。これはE2Eですが、もちろんPHPUnit(など)を使った単体テストもあるでしょう。 CakePHPではfixtureという仕組みを使ってテストデータを作成できるようになっています。 この記事は、テストをするには避けては通れないテストデータについて、以下のような悩みを持っている方を対象とした内容になります。 fixture にテストデータを書くのが面倒 DBにカラムを追加したときに fixture を書き換えるのが

    テストデータを簡単に作る方法 - Qiita
  • CakePHPで知ってると便利なコードまとめ - Qiita

    よく使うものをまとめています。随時更新。 ※最新版では変更になっている場合があります。 CakePHP:ver3.7.6 PHP:7.2.3 Cookbook https://book.cakephp.org/3/ja/ 4.x版はこちら https://qiita.com/egcmrsk/items/09417521c7f0ac5f210f Controller リクエスト 現在のルートを取得 $this->request->getParam(); // controller $this->request->getParam('controller'); // action $this->request->getParam('action'); // prefix $this->request->getParam('prefix');

    CakePHPで知ってると便利なコードまとめ - Qiita
  • CakePhp3のComponentの作り方まとめ - Qiita

    Componentの生成 プロジェクトのbinフォルダに移動し、以下のコマンドを実行。 cake bake component コンポーネント名 ここで、cake bake component TestComponentのように、Componentという単語を含めると精製されるファイルがTestComponentComponentとなってしまうので、cake bake component TestのようにComponentの前の部分だけを指定する。 初期処理 Componentが生成される時に、initializeメソッドが呼ばれる。 initializeメソッドは配列1つを引数に取る(Component読み込み時の引数が入る)。

    CakePhp3のComponentの作り方まとめ - Qiita
  • cakePHP3のQueue Pluginを使ってみる - Qiita

    初、Advent Calendarです。よろしくお願いします(^o^) この記事は、CakePHP 3 Advent Calendar 201513日目用に書きました。 Queue Pluginって? イケメンのMark S.さんが作ってくれている、CakePHP Queue Pluginのことです。 DBにTaskを追加して、Queue用のworkerを動かしておくと、定期的にTaskを実行してくれます。 なぜ、Queue Pluginを使ったか スクレイピングでデータを貯めて、それを参照するWebアプリを作っています。 定期的にスクレイピングしてデータを貯めていますが、それが追いつかない時に、追加でスクレイピングしてくれる仕組みがあると良いなと考え、調べた結果、Queue Pluginを使ってみることにしました。 ※スクレイピングの実行間隔を狭めれば良いんじゃないかとか思いましたが、ま

    cakePHP3のQueue Pluginを使ってみる - Qiita
  • CakePHPのアソシエーションがわからなくなったとき用 - Qiita

    http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html http://blog.ecworks.jp/archives/268 http://qiita.com/kazu56/items/eaaa0c2d7294a28ac21c http://qiita.com/moriyant/items/b57ee4fc45af2fc03194 hasとbelongが、すぐどっちがどっちかわからなくなる。 「持っている」とかアバウトな言葉じゃなくてテーブル定義で教えてくれ。 結論 hasMany 相手テーブルに、自分テーブル.idへの外部キーがある。 hasOne hasManyだけど外部キーがUNIQUE。 belongsTo 自分のテーブルに、相手テーブル.idの外部キーがある。 hasAndB

    CakePHPのアソシエーションがわからなくなったとき用 - Qiita
  • cakephp3における日付のバリデーション - Qiita

    今回やりたいこと postされてくる日付を、現在の日付(今日)より、前であればvalidationを有効にしたい 基 app/src/Model/Table/HogeTable.php POST入力値等の入力値チェックは validationDefault に記述する saveの入力値チェック(Entityチェック)は buildRules に記述する cakephp3のバリデーションは2パターン存在 思考の流れ 自分で考えたbadコードを、プレビューしていただき、 より良いコードになった流れです。 public function validationDefault(Validator $validator) bakeにより、デフォで設定されているのが、 下記の初期段階です。 ※hoge_date は、postされてくるinputのラベル名になります。 $validator ->date

    cakephp3における日付のバリデーション - Qiita
  • CakePHP3でアソシエーションごとsaveする - Qiita

    想定としては、一つの注文(Orders)に複数の商品(Items)が紐付いているようなデータ。 一つの登録画面で注文テーブルに保存する内容と注文明細テーブルに保存する内容を両方入力させてそのまままとめて保存したい。 モデル。 OrdersTable.php のイニシャライズのところにhasmany追加。 public function initialize(array $config) { $this->hasMany('Items', [ 'foreignKey' => 'order_id' ]); }

    CakePHP3でアソシエーションごとsaveする - Qiita
  • CakePHP入門(4) 〜バリデーション〜  - Qiita

    <?php namespace App\Model\Table; use Cake\ORM\Query; use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Validation\Validator; class UsersTable extends Table { public function initialize(array $config) { parent::initialize($config); $this->setTable('users'); $this->setDisplayField('username'); $this->setPrimaryKey('id'); } public function validationDefault(Validator $validator) { $validator ->

    CakePHP入門(4) 〜バリデーション〜  - Qiita
  • デザインがリニューアルされたCakePHP3でbakeしよう! - Qiita

    デザインがリニューアルされたCakePHP3.0でbakeしよう! 前提条件 CakePHP 3.0 をインストール済みであること ○参考 CakePHP 3.0 インストール 実際にbakeを行う 実際にbakeを行います。 注意点は、Cake2系とはコンソールの設置場所が変更されていて、binディレクトリの下になります。 また、bakeの実行方法もパラメーターで指定するように変更されています。 php bin/cake.php bake controller Users php bin/cake.php bake model Users php bin/cake.php bake template Users // controller, model, templateを一括で作成するallもあります。 php bin/cake.php bake all users

    デザインがリニューアルされたCakePHP3でbakeしよう! - Qiita
  • CakePHP3のcontainを操る - Qiita

    CakePHP3でデータベースを引くときに、他のテーブルを取り込めるcontainという機能があります。単にデータを取ってくるだけでなく、更に細かい制御も行えます。 containの必要性 CakePHP3ではモデルクラスもTableとEntityに分かれたことで、1レコードがEntityオブジェクトとなったのですが、その結果発生しうるのがN+1問題です。Entityの中から関連づいたテーブルを参照しようとすると、それぞれのEntityごとにクエリが飛ぶため、クエリの数が膨れ上がってしまうのです。 これを防ぐために、データベースから関連するレコードを一気に引いてしまう、という手法があって、以下のどちらかで実装されています。 関連する別テーブルとJOINすることで、まとめてデータを引く 関連付けするキーを使って別のテーブルを引いて、あとから合成する CakePHP3で、このような「まとめて引

    CakePHP3のcontainを操る - Qiita
  • CakePHP3のEntityのaccessibleでハマった話 - Qiita

    CakePHP3にはEntityに$_accessibleプロパティというものがあります。 http://book.cakephp.org/3.0/ja/orm/entities.html#mass-assignment ↓Bakeするとよく見るコレです。 この状態だとidは変更不可、それ以外は変更可ということになり、Save時のEntityのプロパティに値をセットしたとしても保存されません。 これを利用して、今回ある項目はinputフォームにはreadonlyを付けてPOSTされるけど保存されない、というような実装を行いました。 という前提を元に今回ハマった点について話します。 ハマった問題 リレーションを貼った先のEntityに想定したaccessible設定しているのに保存されない! 構成 テーブル関係 企業情報テーブルとそれに紐づく口座情報を格納する2つのテーブルがあり、hasma

    CakePHP3のEntityのaccessibleでハマった話 - Qiita
  • bakeコマンド - Qiita

  • 1