cakePHPのModelでSQLのCASE WHEN文を使いたい

Author:

cakePHPのModelでcase文を使いたい場合、fieldsにそのまんま書けばいいです。
別にカラム名しか書いちゃいけないというわけじゃないです。

こんな感じ。
$this->find(‘all’, [‘fields’ => ‘sum(case when age > 30 then 1 else 0) as count’]);

もちろんcountとかmysqlの関数も同じように書けばそのまんま反映されます。
joinsみたいに特別な書き方する必要は無いです。

codeigniterでも$db->select()内にそのまま書けば動くし、とりあえずこういうSQL関数はそのまんま書いてみると動いたりするものです。

Laravelの基本的な書き方

Author:

フレームワークによってModelやViewの読み込み方って地味に違いますよねえ。
こんな感じに書きます。

ちなみにこれはroutes.phpにRoute::controllerと設定した場合ですね。
Route::resourceで設定した場合はgetIndexではなくindexになります。

namespace App\Http\Controllers;
// モデルの定義
use App\User;

class HomeController extends Controller
{
    public function __construct()
    {
    }

    public function getIndex()
    {
        // モデルはnewでインスタンス生成が必要
        $user = new User;

        // モデル関数の呼び方は普通に
        $activeUsers = $user->getActiveUsers();

        // ビューを呼ぶ
        // 変数は第二引数にarrayで渡す
        return view('home.index', ['activeUsers' => $activeUsers]);
    }
}

Laravelの使い方とかのまとめ

Laravelのディレクトリ構造はこんな感じ

Author:

Laravelをとりあえずインストールしてみると、app配下にModelもViewもControllerも無いのでびっくりするかも。
それぞれこんな感じに作成するようです。

app/Http/Controllers/

ここに通常のコントローラーをいれます。

app/

デフォルトでUser.phpが入っているように、Modelはディレクトリ掘らないで直下に置きます。

resource/views

Viewファイルはここに置きます。

resources/assets/

ここにlessとかcoffeescriptとかビルド前のファイルを置いておくと自動的にElixirがpublic/cssやpublic/jsへコピーしてくれます。

app/Http/

Laravelで重要なroutes.phpはここにあります。

config/database.php

DB設定はここです。

config/app.php

メイン設定はここにあります。

ディレクトリ構造がずいぶんと違うので注意しましょうね。

Laravelの使い方とかのまとめ

Laravel5でmigration実行時にhomesteadユーザーでログインされてしまう

Author:

Laravelでphp artisan migrate:installとかするとこんなエラーになりました。

  [PDOException]
  SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

Laravelでデータベースのユーザー名をいじる場所は2箇所あります。
1つ目は他のフレームワークでもお馴染みのModel用。
config/database.phpにあります。

そしてもう一つはartisan用、コマンドライン用。
.envファイルにあります。

だからconfig/database.phpでユーザー名を書き換えたはずなのにphp artisan migrateとかやるとhomesteadユーザーでアクセスしようとするのですよ。

[tea@astrominit lara]$ cat .env
APP_ENV=local
APP_DEBUG=true
APP_KEY=Agam7O0R1nSHsPOksmFg0eM9IMwKEJfL

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

Laravelは色々こういうところがあるのでご注意を。

Laravelの使い方とかのまとめ

PHPMyAdminでログインボタン押してもログインできない

Author:

PHPMyAdminでログインしようとしたらなぜかはじかれる。
パスワードが間違っているわけでもないのになぜだ?
さっきyum -y updateとかやったのが原因な気もするけど。
なんか以前にもこんなことあったなぁ。
→ PHPMyAdminにログインできなくなった

ちょっと調べてみたらすぐ原因判明。
/var/lib/php/session/がrootでしか読めないようになっていた。
sudo chmod 777 /var/lib/php/session/で解決。

が、今度はMySQLとつながらなくなった。
他のWebアプリは使えているので、とりあえず最新バージョン持ってきてインストールし直し。
入れるようになった!

file_get_contentsで取得した文字列が特定のサイトだけ文字化けしていた

Author:

file_get_contentsでURLからデータを取得したら、
だいたいのサイトは取得できるのになぜか特定のサイトだけ文字化けする出来事があった。

なぜだ?
unpack関数を使ってバイナリダンプしてみると、なぜか0x0とか入っている。
これ文字列じゃないぞ?何を取得しているんだ?
curlで取得してencodingを見てもtext/xmlとなっているのに。

Continue reading…