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を作ると日本語が表示された。