サブジェクトの通り、CakePHP2.xでの、セッションIDの取得方法。 どうやって取得するのか調べてまで得た知識なので、忘備録としてポストです。 セッションid の取得は
サブジェクトの通り、CakePHP2.xでの、セッションIDの取得方法。 どうやって取得するのか調べてまで得た知識なので、忘備録としてポストです。 セッションid の取得は
CakePHP(1系統でも2系統でも)でsaveを使ってレコードを更新すると、modified日時が自動的に更新されますが、ステータスの変更の場合は日時を更新しないでほしい、という要望を受けました。 ということで、sava時にmodifiedを更新しない方法を備忘録としてポストしておきます。 なおCakePHPのバージョンは、2.10.12にて確認しました。 save時にmodifiedを更新しない modifiedを更新しないようにするには、以下のように modified に false をセットすればOKです。 // 保存データ $savedata = array( 'Data' => array( 'id' => $id, 'status' => 2, 'modified' => false, ←★ ) ); $this->save($savedata, false);
モデルで使用しているテーブル名を動的に切り替えるメソッド $this->Model->setSource(table_name); マージテーブルなどで年代別に複数のテーブルに分割している場合などで、特定のテーブルのデータを取得したいときに使えそうです。 $this->Model->useTable の中身も自動的に切り替わるので、これで元に戻そうとしてこれをセットしても戻りませんので注意。 また、コントローラーでModel::useTableを書き換えても駄目です。 モデル名、テーブル名が命名規約に添っていれば下記で元に戻ると思います。 $this->Model->setSource(inflector::tableize($this->Model->name));
CakePHPモデルが参照するデータベースのテーブルを途中で変更するということで「setSource()」を以前に説明しました モデルが参照するデータベースのテーブルを途中で変更する ということで「setSource()」を以前に説明しましたが、注意点を発見。。。 自分のメモとして記録します(汗 恐らくデータベースの設計が複雑だったり、負荷分散的(?)につかわないかぎり あまり利用されない方法かとは思いますが。。。 さて注意点ですが、コントローラーの途中で「setSource()」を使うことで 参照テーブルを変更できますが、コントローラーの途中で新たなテーブルを作成して そのテーブルを「setSource()」でセットするとどうなるでしょうか。。。 はい、実はテーブルがありませんとエラーが出ます。 これはCakePHPが接続しているデータベースのテーブル情報を キャッシュし、そのキャッシュ
URLリライティング¶ Apache と mod_rewrite (と.htaccess)¶ CakePHP は、展開した状態では mod_rewrite を使用するようになっており、 自分のシステムでうまく動作するまで苦労するユーザもいます。 ここでは、正しく動作させるために行うことをいくつか示します。まず始めに httpd.conf を見てください(ユーザーやサイト独自の httpd.conf ではなく、 必ずシステムの httpd.conf を編集してください)。 これらのファイルは、ディストリビューションや Apache のバージョンによって異なります。 詳しくは https://wiki.apache.org/httpd/DistrosDefaultLayout を参照してください。 .htaccess のオーバーライドが許可されていること、正確な DocumentRoot に対
CakePHPでファイルアップロードを作る ファイルアップロードの参考サイト CakePHP 2.3でプログラム開発を行っていますが、ファイルのアップロード処理についてググっていたら、下記のサイトに行き当りました。 ほほー。ファイルアップロードにも Pluginがあるのか、と思ったものの、このページではプラグインに頼らない、と書いてありましたので、私も頼らずに実際に作ってみることにしました。(記事が書かれたのが 2011年2月ですので、その後のバージョンアップなどでどうなったかは分かりませんが。) http://lambdagroove.blogspot.jp/2011/02/cakephp.html 簡単なファイルのアップロードであれば下記のページに従って作っていけば、簡単に出来上がります。 http://www.almondlab.jp/labs/1043 上記の方法では、実運用に際し
getLastInsertId() という便利メソッドがある。 これは Model で保存したデータの最新主キーを返してくれる。 ただ、いまいち挙動が信用できない。 具体的に言うと、 getLastInsertId() は 該当モデル(テーブル)の最新主キーを返すのか、 保存したデータに割り振られた主キーを返すのか・・・。 ということで、以下のコードで検証してみた。 <?php App::uses('AppController', 'Controller'); class TopsController extends AppController { public $name = 'Tops'; public $uses = array('Category', 'Title', 'Note'); public function index(){ $this->autoRender = fal
はじめに 今更ながらCakePHP2.xでの論理削除を実装したのでメモします。 論理削除の実装にはCakeDC/utilsのSoftDeleteBehaviorを使わせて頂きました。 今回論理削除を実装するにあたり色々調べたのですが、 githubからSoftDeleteBehavior.phpのファイルをダウンロードして、 直接プロジェクトのModel/Behaviorディレクトリに配置する方法は情報があったのですが、 composerでCakeDC/utilsをインストールして Pluginディレクトリから使用する方法が見当たらなかったので記事にしようと思いました。 もはや需要はないかもしれない… 環境 Windows7にて作業 PHP 7.3 CakePHP 2.10 今回使用するプラグイン CakeDC/utils 実装方法 1.CakeDC/utilsをcomposerでインスト
$col_list = $Model->getColumnTypes() var_dump($col_list); /* カラム名=>型が取得できる。 array(1) { ["id"]=> string(4) "integer" } */
CakePHPでは、モデルにアソシエーションを設定している場合、recursive(=>joinする階層)はデフォルトで0に設定されています。「recursiveゼロ」の意味するところとは、「1跨ぎまでのJoinを行う」ということになり、Find()関数を使用した場合、デフォルトの状態でJoinが行われてしまいます。テーブル単体でfindしたい場合などは、find()の前に$recursive = -1とすることで余計なjoin処理を省略することができます。join先のテーブルのレコード数が多い場合などは効果絶大。 例 「User」とそれに紐付く「Usercomment」モデルを用意しました。 -- usersテーブル CREATE TABLE IF NOT EXISTS `users` ( `id` INT NOT NULL AUTO_INCREMENT , `username` VAR
ちょっと見た限りでは、これでこのシステムは問題なく動くように 見えますよね。セキュリティを維持しながら任務の割り当てが行われ (指輪にアクセスできるのは Frodo だけ)、かつ事故を未然に防ぐ ようになっています(ホビット族を塩漬け豚や武器に近づけない)。 これで十分細かく分けられ、かつ読みやすい、ですよね? このように小規模なシステムなら、マトリックスによる設定でも うまくいくでしょう。しかし成長真っ只中のシステムや、大量の リソース(ACO)とユーザ(ARO)を持つシステムだと、テーブルが すぐに破綻してしまうでしょう。戦場の野営地が何百箇所もあって、 それらを個別に管理することを考えてみてください。マトリックス 方式のもう一つの欠点としては、ユーザを束ねる論理的なグループ を作ったり、それらの論理グループをベースとした(階層的な) ユーザグループに対して、パーミッションの変更を再帰
CakePHPで各ビューで特定の処理をコンポーネントでまとめて呼び出したい場合があると思います。 単純に考えるとビューにコンポーネントをセットすればよいと思いますが、ヘルパーからコンポーネントを呼び出す方法もあるみたいなので、今回はそれを試してみたいと思います。 調べると結構みつかるのですがCakePHPのバージョンが異なるのかうまく動かなかったのでCakePHP2.4で動くように修正しました。 今回は、共通コンポーネントとしてCommonComponentを共通ヘルパーCommonHelperから呼び出す方法を考えています。 CommonComponent Controller/Component/CommonComponent.php [php] class CommonComponent extends Component { public function getString()
ヘルパー¶ ヘルパーはアプリケーションのプレゼンテーション層のためのコンポーネントのようなクラスです。 多くのビューやエレメント、レイアウトで共有される表示ロジックを含んでいます。 この章では、ヘルパーを設定する方法を紹介します。ヘルパーの読み込み方法、 それらのヘルパーの使い方、独自のヘルパーを作成するための簡単な手順を概説します。 CakePHP にはビューの作成に役立つ多くのヘルパーがあります。それらは、整形式のマークアップ (フォーム含む)、テキスト、時間、数値の整形に役立ったり、 Ajax 機能 をスピードアップさせたりします。 CakePHP のヘルパーに関する詳細については、各ヘルパーの章をご覧ください。
こんにちは!cakephp3を始めたい!と思って検索すると、「簡単に始められるよ。」という記事がたくさん出てきます。 それならやってみようと思いきや、全然うまくいかない。 intlがどうこうってエラーに三日近く悩みました。笑 解決したのでその直し方を書いていきます。 環境 mac os X 10.11 XAMPP cakephpをダウンロードできるサイト Tags · cakephp/cakephp · GitHub ここでダウンロードできた方は localhost/cakephp/ で起動してみてください。 こんな感じの画面になれば成功なのですが・・・・・。 この方と同じエラーにはまりました。 CakePHP3を使うで!! – 献本の備忘録 Fatal error: You must enable the intl extension to use CakePHP. inC:\xampp
cakePHPで以下のエラーメッセージの対処法。 mysqlでDBに接続しようと思ったら、よくわからんエラーメッセージ。 苦戦しまくったから、メモ。 Error: A Database connection using "Mysql" was missing or unable to connect. The database server returned this error: Selected driver is not enabled Error: Mysql driver is NOT enabled php.iniに2行追加。(あらかじめ書いてある場合があるが、その場合はコメントアウトを外す) extension=php_pdo.dll extension=php_pdo_mysql.dll
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く