2014年12月23日火曜日

コレクションのソート

作成日時順にソート
$collection->sortBy('created_at');
降順なら
$collection->sortByDesc('created_at');

Firefoxでクッキー削除

Shift+F2で開発ツールバーを起動。
cookie list
でクッキーを表示して削除。もしくは
cookie remove クッキー名
で。

グループ化して文字列の連結

MySQLの関数GROUP_CONCATを使う。
GROUP_CONCAT(tags.name)
でカンマ区切りの文字列になる。 Laravelでは
DB::raw('GROUP_CONCAT(tags.name) as tag_name')
でOK。 カラムの一部でも可能。
Model::select(['id', DB::raw('GROUP_CONCAT(tags.name) as tag_name')])

2014年12月14日日曜日

XAMPPでmod_deflateを有効化

C:\xampp\apache\conf\httpd.confにて
LoadModule deflate_module modules/mod_deflate.so
をコメント解除

2014年12月13日土曜日

2014年12月11日木曜日

2014年12月6日土曜日

whereRawの使い方

whereRaw("date_format(created_at, '%Y-%m') = ?", [$dt->format('Y-m')])
2つ目の引数にバインドするデータを配列で渡す。

2014年12月4日木曜日

マイグレーションに失敗

外部キーを設定したマイグレーションに失敗。 原因は親キー(id)がunsignedになっていなかったこと。

2014年12月3日水曜日

タイムゾーンの設定

EC2のUbuntuはタイムゾーンがUTCなので変更
# sudo dpkg-reconfigure tzdata

2014年12月1日月曜日

MySQLで日付の比較

DATEとDATETIMEを比較するときにはキャストが必要。
select '2014-11-30 12:00' <= '2014-11-30';
は0でNG。
select CAST('2014-11-30 12:00' AS DATE) <= '2014-11-30';
は1でOK。

2014年11月14日金曜日

環境をlocalに設定

app\bootstrap\start.phpを編集。
$env = $app->detectEnvironment(array(
    'local' => array('homestead', 'host名'),
        ));

php artisan env
で確認。

host名を調べる

コマンドプロンプトで
hostname

2014年11月6日木曜日

タイムゾーン変換

EC2のMySQLのタイムゾーンがUTCだったので
$dt = new DateTime($modified, new DateTimeZone('UTC'));
$dt->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $dt->format('Y-m-d H:i:s');

2014年11月1日土曜日

2014年10月25日土曜日

DatePeriod

前後3日間の期間をforeachでループ
$start = new DateTime();
$end = clone $start;
$start->modify('-3 day');
$end->modify('+3 day');

$daterange = new DatePeriod($start, new DateInterval('P1D'), $end);

foreach ($daterange as $value) {
    
}

2014年10月16日木曜日

MySQLに外部から接続する

Ubuntuなので
/etc/mysql/my.cnf
を編集。
bind-address           = 127.0.0.1
許可したいIPアドレスに変更する。 コメントアウトですべて許可。
$ /etc/init.d/mysql reload
忘れずにリロード。

2014年10月14日火曜日

jQueryでフォームを送信

フォームの中のリンククリックでフォームを送信したい。
$('a').click(function () {
    $(this).parent('form').submit();
    return false;
});
では動作せず。
$('a').click(function () {
    $(this).closest('form').submit();
    return false;
});
で送信に成功。
    $(this).parent('form').get(0).submit();
でもOK。

2014年10月13日月曜日

foreachで配列の要素を削除

キーを指定してunset()
foreach ($array as $key => $value) {
    if ($value === 'hoge') {
        unset($array[$key]);
    }
}

MySQLで月別クロス集計

CASE式を使う。

select 
    user_id,
    name,
    sum(date_format(created, '%Y-%m') = '2014-06') as '2014-06',
    sum(date_format(created, '%Y-%m') = '2014-07') as '2014-07',
    sum(date_format(created, '%Y-%m') = '2014-08') as '2014-08',
    count(*) total
from
    customers
        inner join
    users ON users.id = customers.user_id
where
    created between '2014-06-01' and '2014-08-01'
group by user_id;

2014年10月12日日曜日

Laravelのコレクション

lists

selectに渡す配列を生成。

$users = User::all()->lists('name', 'id');

idをキーとした配列ができる。

laravel-dompdfで日本語表示

composerを使ってインストールは問題なく終了。

$pdf = App::make('dompdf');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();

テスト表示もOK。

日本語フォントはTakaoゴシックを採用。 dompdfのload_font.phpを使ってフォントをインストール。
$ php load_font.php TakaoExGothic TakaoExGothic.ttf
しかし、エラーが発生。php-font-libが見つからないとのことなので
$ln -s /var/www/laravel/vendor/phenx/php-font-lib/classes/ classes
シンボリックリンクを作って対処。 今度はエラーなく終了して、フォントのインストールに成功。 さっそく日本語を含むPDFの作成を試みるも日本語が表示されない。 もちろん

は追加済み。 その後、しばらく悩むが原因が判明。 laravel-dompdfは
app/storage/
にフォントを置く必要があるようだ。 同様に
$ln -s /var/www/laravel/vendor/dompdf/dompdf/lib/fonts/ fonts
シンボリックリンクを作り、再度PDFを作ると日本語が表示された。