#LaravelでSQLを書く時困った
通常のSQL文は書けるが、そのSQLをLaravelのクエリービルダーのコードにした時に、
合ってるのかわからず、とりあえず動かして確認したりしていた。
#Laravel Newsに良さげな記事があった
Convert Your SQL to Laravel Builder with Orator
どうやら、SQL文をLaravelのクエリービルダーのコードに変換してくれるサイトが出来たらしい。
上記の記事では以下の様な変換される例が載っていた。
test.sql
select posts.id, posts.title, posts.body from posts
where posts.author_id = 1
order by posts.published_at DESC
limit 10;
変換結果がこちら。
result.php
DB::select('posts.id','posts.title','posts.body')
->from('posts')
->where('posts.author_id', '=', 1)
->orderBy('posts.published_at', 'DESC')
->limit(10)
->get();
#実際に使ってみた
実際の変換サイトはこちら
Convert Your Legacy SQL to Laravel Builder
例えばこんなSQL文をLaravelのクエリービルダーに変換してみる
test.sql
SELECT name, no
FROM users
WHERE no = (SELECT no
FROM users
WHERE name='test');
変換結果がこちら。なるほど。
result.php
DB::table('users')
->select('name', 'no')
->where('no','=',function($query) {
$query->from('users')
->select('no')
->where('name','=','test');
})
->get();
複雑なSQLの場合の参考に使ったり出来るかも。