MasKのpermission denied.

新卒2年目WEBエンジニアの僕がぶつかった技術的な問題や発見のメモ

MySQL

SequelProでVagrant内のMySQLに接続する方法

VagrantにMySQL立てたけど、SequelProとの接続ってどうやるんだろーと思って調べたのでシェア。 SQL系は素でコマンド叩くよりGUIの方が扱いやすいですよね。↓SequelProが何かわからない方向け iritec.jpPhpMyAdminよりだいぶ使いやすいですよね。 ってなわけ…

【Laravel】レコードがあったらUpdate、無ければInsertする方法

LaravelでレコードがあったらUpdate,無ければInsertする方法を思いついたのでメモ。 $member = Member::firstOrNew(['member_id' => 00001]); $member->name = '太郎'; $member->save();firstOrNew()はレコードがあれば取ってきて、無ければnewしてくれるの…

LaravelでJOIN ON を使う

hogeテーブルのレコードに対して、pageテーブルのレコードを削除フラグ is_deleted = 0 だったら 結合したい場合、Laravelでは $sql->leftjoin('page', function($join){ $join->on('page.hoge_id', '=', 'hoge.hoge_id') ->where('page.is_deleted', '=', 0…

Laravelでテーブルをjoinで結合してテーブル間でカラム名が被ったときの対処法

Laravelでテーブルをjoinで結合してテーブル間でカラム名が被ったときの対処法 usersテーブル id, name, class_idclassesテーブル id, nameというカラムを持っていたとすると、 $users = DB::table(‘users') ->select(‘users.id', ‘users.name', ‘classes.na…

SQLでランダムに抽出

ランダムに20件のデータを抽出するには SELECT * FROM {table名} ORDER BY RAND() LIMIT 20; で書ける。 ランダム関数はMySQLではRAND()でPostgresではRANDOM()で書ける。けど先輩に聞いた話だと、SQLのランダムは遅いらしいので、普通にPHPなどにランダム…

MySQLでNote: #1265 Data truncated for column 'created' at row 1というエラーが出た

新しくDBを作ってデータを挿入しようとしたら Note: #1265 Data truncated for column 'created' at row 1 というエラーが起きた。調べてみるとどうやら挿入されようとしたデータがなんか想定してたより長いよ。的なエラーらしい。 僕の場合はレコードが作成…

Laravel4でSQLのLIKEの使い方

Laravel4のクエリービルダーでLIKE句を使おうと思って ->... ->like('name', '%あああ%') ->get(); みたいな使いかたしたけど通用しなくて、どうやって表現するんだろうかと思って調べたら ->... ->where('name', 'LIKE', '%あああ%') ->get(); でとれました…

【MySQL】値があればUPDATE文、無ければINSERT文に分岐させる処理【DUPLICATE KEY】

WEBサービスを作っていると、「これに関する行があるなら上書き、無いなら新規登録したい!」という時がありますが、MySQL歴の短い僕はその方法が分からず、毎回 特定の行が存在するかチェック➡あればUPDATE、無ければINSERT という面倒な処理を書いていまし…

【MySQL】MySQLが日本語文字化けしてしまう問題【Sequel Pro】

MySQLで日本語が文字化けしてしまう問題があって、ネットで調べたけどよくわからなかったのだけれど、普段僕が使っているMySQL接続ツールSequel Pro(無料)の設定弄ったら動いたのでメモ。 とりあえず、各テーブルの文字化けしてしまうカラムのエンコーディ…