やりたい事
下記テーブルから30才未満のユーザーが所持している発売から1年以内の携帯を取得したい。
users_table
+----+---------------+-----------+-----+
| id | name | phones_id | age |
+----+---------------+-----------+-----|
| 1 | XXX | 1 | 25 |
| 2 | XXX | 2 | 30 |
| 3 | XXX | 3 | 21 |
+----+---------------+-----------+-----|
phones_table
+----+---------------+---------------------|
| id | number | release_date |
+----+---------------+---------------------|
| 1 | XXX-XXXX-XXXX | 2018-11-01 00:00:00 |
| 2 | XXX-XXXX-XXXX | 2017-11-01 00:00:00 |
| 3 | XXX-XXXX-XXXX | 2016-11-01 00:00:00 |
+----+---------------+---------------------|
コード
php
$lastYear = date("Y-m-d H:i:s", strtotime("-1 year"));
$data = Phone:where('release_date', '>', $lastYear)
->whereIn('id', function($query)
{
$query->select(DB::raw('phones_id'))
->from('users')
->whereRaw('age < 30');
}
)
->get();