プログラミングノート

プログラミングの備忘録です

トップページ

最新記事

homework.hatenablog.jp

おすすめ記事

homework.hatenablog.jp

記事紹介

 

Git

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

 

Googleドキュメント

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

 

Google API

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

homework.hatenablog.jp

 

Webアプリケーション開発環境

homework.hatenablog.jp

homework.hatenablog.jp

 

 

MySQL Windowsでsql_mode設定が変更できない

WindowsMysql 5.7を使っています。

sql_modeを変更するために、Mysqlのインストーディレクトリにあるmy.iniを変更しましたが、データベースに反映されませんでした。それは、my.iniが別の場所にもあったためでした。

そのときのことをメモしておきます。

 

1.MysqlのインストーディレクトリにあるMySQL SERVER5.7/my.iniを変更しました。

下の1行をコメントアウトしました。

#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

2.もう一つのmy.iniを変更しました。

もう一つのmy.iniの場所は、php.iniのdatadirの一つ上の階層にあるにあるMySQL Server 5.7\my.iniです。

#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Mysqlのインストーディレクトリが、WindowsのProgramDataやProgramFileの場合は、管理者権限でファイルを編集する必要があります。

 

3.コマンドプロンプトから確認します。

Mysqlにログイン後、下のSQLを実行します。

select @@GLOBAL.sql_mode;

 

下の結果が表示されました。

+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
|                   |
+-------------------+

 

4.メモ

sqlは、「@@GLOBAL.sql_mode」でsql_(アンダーバー)modeですが、

iniファイルには、「sql-mode」でsql-(ハイフン)modeでした。

 

5.参考

MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モード

 

Cakephp htaccessでのRewrite設定

Cakephpを使うときプロジェクトを配置しようとして、悩んだことを書きます。

 

ドキュメントルートにフォルダを作成し、その中にindex.phpを置きたいと考えました。そのとき、htaccessファイルの設定に困りました。

 

例として、ドキュメントルートに「project」フォルダを作成し、index.phpファイルを置く場合を書きます。

 

1.index.phpを格納

ドキュメントルートに「project」フォルダを作成し、ダウンロードしたCakephpに含まれているindex.phpファイルを置きます。

 

2.htaccessを作成

コントローラ名をURLから取得するため、Rewriteを設定をします。Rewriteを設定するために、htaccessを作成しindex.phpと同じディレクトリに配置します。

 

以下、htaccessの内容です。

 

1.書き換えを有効にします

RewriteEngine On

 

2.フォルダの場所を指定します

RewriteBase /project

 

3.書き換えの条件を指定します

RewriteCond %{REQUEST_FILENAME} !-f

(%{REQUEST_FILENAME}が存在するファイル名の場合はRewriteしません。)

 RewriteCond %{REQUEST_FILENAME} !-d

(%{REQUEST_FILENAME}が存在するディレクトリ名の場合はRewriteしません。)

 

4.書き換え内容を指定します。

書き換えの条件を満たし、1つ目の正規表現に一致した場合2つ目に書き換えます。

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

 

[QSA]は「Query String Append」の略で、[QSA]を指定すると、%{QUERY_STRING}が引数として付きます。上の場合、 index.php?url=$1&%{QUERY_STRING} となるそうです。

[L]を指定すると、この後RewriteRuleを使って書き換えません。

 

たとえば、「http://ドメイン/project/test/view」(コントローラ名がtest、メソッド名がview)とアクセスした場合、書き換え後のurlパラメータには「test/view」が入ります。

 

 

Cakephpの導入のために、少しだけRewriteについて学びました。まだまだRewriteについて勉強しないといけないと感じています。また時間があるときに、Rewriteをもっと勉強します。

 

参考

RewriteRuleについて - ハトムネメモ

(参考にさせていただきました。わかりやすかったです。感謝します。)

URLリライティング

はじめてのCakephp メモ一覧

Cakephpのメモがバラバラに保管されてましたので、読みやすいように項目ごとにまとめました。

 

1.CakePHPの導入

homework.hatenablog.jp

homework.hatenablog.jp

 

2.CakePHPとデータベース

homework.hatenablog.jp

homework.hatenablog.jp

調布市子ども交通教室

 昨日はこどもの日でしたので、9歳の娘と一緒に、調布市子ども交通教室に行きました。娘は自転車に乗れなかったので、自転車に乗る練習のために行きました。

 昨日は、祝日でしたがこどもの日でしたので、一般開放されていました。

 

 カーブや円コースがあり、ハンドル操作の練習ができます。

 横断歩道や信号・標識があり、安全に自転車に乗るための練習ができます。

 平らで広いコースをまっすぐに走ることができ、自転車に乗るための練習もできました。

 娘の体に合った自転車を借りてのびのびと練習ができましたので、娘は、昨日自転車に乗れるようになりました!

 娘は「また行きたい!」と言っています。今度は、安全に自転車に乗る練習のために行こうと思っています。

 

 自転車やヘルメットを持たずに行きました。自転車もヘルメットも貸してもらうことができて助かりました。自転車の選び方を教えていただきました。サドルに座った時、ひざが伸びて足の裏全体が地面につく自転車がいいそうです。

 

 中央自動車道の高架下なので、快適に自転車の練習ができます。コースが整備されていますので、安全に自転車の練習ができます。

 このような安全で快適な自転車の練習場を提供してくださり、とても感謝しています。

 

調布駅からの行き方>

 調布駅北口からバスに乗ります。

 「調布市子ども交通教室」の最寄りバス停は「御塔坂下」で、調布駅北口の11番バス停または13番バス停から発車するバスに乗車すればいいそうなのですが、、、。昨日は調布駅に到着したタイミング悪く、「御塔坂下」を通るバスが来るまでに時間がありました。

 そのため、「御塔坂下」は通らないけれど「御塔坂」を通るバスに乗り、「御塔坂」で下車して、(娘と二人でだらだらと歩いて)約5分ぐらい歩きました。

 

<お休みの日>

お休みの日があります。下のページでご確認ください。

調布市子ども交通教室 | 調布市

CakePHP3 データベースにデータを挿入

CakePHP3でデータベースにデータを挿入する方法を書きます。

 

1.TableRegistryクラスを使います。
use
Cake\ORM\TableRegistry;

 

2.getメソッドの引数にテーブル名を指定し、TableRegistryオブジェクトを作成します。

$booksTable = TableRegistry::get('Books');

3.TableRegistryオブジェクトのnewEntityメソッドを使って、新しいエンティティを作成します。

$book = $booksTable->newEntity();

$book->title = '本タイトル';

$book->content = '本の中身';

 

4.作成したエンティティを、TebleRegistryオブジェクトのsaveメソッドの引数に渡します。

if ($booksTable->save($book)) {

     $id = $book->id;

}

5.saveメソッドを実行後、エンティティには新しいidができています。

 

 

上の場合、データベースにBookテーブルを作成し、id列とtitle列とcontent列を含めました。コントローラ名はBooksControllerとしました。

 

参照

データの保存

 

cakephp 新規作成したテーブルを使うモデルを追加するときの注意

データベースにテーブルを新規作成し、そのテーブルを使うモデルを追加した時、困ったことを書きます。

 

Cakephpは、データベースのテーブル一覧を、キャッシュとして保存します。

基本的には、app/tmp/cache/modelsに、「cake_model_(データベース識別子)_(データベース名)_list」という名前で、テーブル一覧のキャッシュが保存されます。

(※ キャッシュの格納場所と名前については、下記の「キャッシュの格納場所と名前のご注意」をご覧ください。)

 

データベースにテーブルを新規作成した場合、キャッシュされているテーブル一覧を一度削除して、新しいテーブルを含むテーブル一覧をキャッシュする必要があります。

 

 

<補足:データベースのテーブル構造を変更した場合>

 

Cakephpは、テーブル構造もキャッシュとして保存しますので、テーブル構造を変更した場合も、キャッシュの削除が必要です。

 

基本的には、app/tmp/cache/modelsに、「cake_model_(データベース識別子)_(テーブル)」という名前で、テーブル構造のキャッシュが保存されます。

(※ キャッシュの格納場所と名前については、下記の「キャッシュの格納場所と名前のご注意」をご覧ください。)

 

※ キャッシュの格納場所と名前についてご注意

config/app.phpなどの設定ファイルで、格納場所やファイル名を変更している場合は異なりますので、設定ファイルをご確認ください。

 

 

参考

キャッシュ