【Laravel】実務でデータベースに接続方法!if文で分岐する例の紹介
今回は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();
}
同じようなコードを書きたい方はぜひ参考にしてみてください。