Laravelでデータベースからselectした結果を使ってwhere検索する方法

IT全般

とあるテーブルのデータを用いて、さらに別のテーブルのデータを取り出そうとしたのですが思った通りの結果が出ず。。
JoinしたりleftJoinしているうちに何がなんだか分からなくなり、地道に組み立てようとするもソレにも時間がかかったので忘備録としてメモしておきます。

// サンプルとして作成したコードです。

// use Illuminate\Support\Facades\DB;

    public function index()
    {
        $results =  DB::table('table_a')->get('town_id')->toArray();

        $results_array = array();

        foreach ($results as $value) {
            array_push($results_array , $value->town_id);
        }

        // $results_array に結果が入っている

        return view('somethingview', [
            'test' => DB::table('table_b')
                      ->whereIn('town_id', $results_array)
                      ->paginate(5)
        ]);
    }

DB::table(‘table_a’)->get(‘town_id’) で取得したデータはCollectionクラスのインスタンスとして取得することになります。今回 “toArray()” を使っているのは、実際に取り廻すのであれば配列に固めた方が何をやっているのか分かりやすいと思ったからです。

急がば回れということで。

タイトルとURLをコピーしました