【Laravel】実務でデータベースに接続方法!if文で分岐する例の紹介

Laravel,PHP

ミニマリスト_カミ

kamiです。
TwitterYoutubeもやってます。

今回はDBをif文で分岐する例の紹介です。

if文でどちらもDB接続する

この例では引数の有無で分岐して、テーブルへ接続を行います。

public function execute($arg)
{
    $user_info = [];
    if (!empty($arg)) {
        $user_info = DB::table('users')
            ->select('user_id', 'ages.id as id', 'gender as name')
            ->join('ages', 'users.age_id', '=', 'ages.id')
            ->where('ages.id', '=', $arg)
            ->get();
    } else {
        $user_info = DB::table('users')
            ->select('user_id', 'ages.id as id', 'gender as name')
            ->join('ages', 'users.age_id', '=', 'ages.id')
            ->get();
    }

    return $user_info;
}

if文でtrue時にDB接続する

この例では引数があれば、trueでwhere句で使用されます。

public function execute($arg) 
{
    $user_info = [];

    $user_info = DB::table('users')
        ->select('user_id', 'ages.id as id', 'gender as name')
        ->join('ages', 'users.age_id', '=', 'ages.id');
    if (!empty($arg)) {
        $user_info->where('ages.id', '=', $arg);
    } else {
        // $arg が空の場合の処理を記述
        // ここでは何も行いません
    }
    $user_info = $user_info->get();

    return $user_info;
}

スポンサードサーチ

march式

この例では検索した結果をユーザーテーブルから、ユーザーを取得している例になります。

public function execute(SearchInput $input): array
{
    $user_info = User::select('users.name as user_name', 'ages.name as age_name', 'genders.name as gender_name', 'users.user_id as client_id', 'users.municipality as municipality_name', 'industrys.name as industry_name')
        ->join('users', 'users.id', '=', 'user_details.user_id')
        ->join('ages', 'users.age_id', '=', 'ages.id')
        ->join('genders', 'users.gender_id', '=', 'genders.id');

    $user_info = match (true) {
        !empty($input->user) => $user_info->where('users.name', 'LIKE', '%' . $input->user . '%'), // ユーザー名検索
        !empty($input->age) => $user_info->where('ages.id', '=', $input->age), // 年齢検索
        !empty($input->gender) => $user_info->where('genders.id', '=', $input->gender), // 性別検索
     default => $userlist, // 検索なし
    };

    return $user_info->get()->toArray();
}

同じようなコードを書きたい方はぜひ参考にしてみてください。

Laravel,PHP

Posted by kami