第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Symfony 查詢轉(zhuǎn)換為 Laravel 6.x Eloquent 查詢

將 Symfony 查詢轉(zhuǎn)換為 Laravel 6.x Eloquent 查詢

PHP
一只斗牛犬 2022-06-11 10:06:59
我目前正在將 Symfony 3.4 站點遷移到 Laravel 6.x,并且我正在尋找將此查詢轉(zhuǎn)換為 Laravel Eloquent 查詢的正確方法。這是 Symfony 查詢 $qb = $this->createQueryBuilder('up'); $qb->select('COUNT(up.id)'); $qb->leftJoin('up.workout', 'w')        ->leftJoin('up.user', 'u')        ->where('up.parent IS NULL AND up.deleted = false')        ->andWhere('up.status != \'Just started\' OR up.status is NULL')        ->andWhere('w.workoutType = \'Normal\' AND u.deleted = false')        // Long Cardio, Long Cardio (Burn) and Long Cardio (Hardcore)        ->andWhere('up.completed = true OR (up.completed_cardio_shred = true AND ((w.level = \'Long Cardio\') OR (w.level = \'Long Cardio (Burn)\') OR (w.level = \'Long Cardio (Hardcore)\')))');  $qb->getQuery()->getSingleScalarResult();這是我使用 Laravel 6.x DB Query 生成的 $userProgressTable = DB::table('user_progress');    $userProgressTable->select('id');    $userProgressTable->leftJoin('fos_user', 'fos_user.id', '=', 'user_progress.user_id');    $userProgressTable->leftJoin('workout', 'workout.id', '=', 'user_progress.workout_id');    $userProgressTable->whereRaw('user_progress.parent_id IS NULL');    $userProgressTable->where('user_progress.deleted', '=', false);    $userProgressTable->whereRaw('user_progress status <> \'Just started\' OR user_progress.status IS NULL');    $userProgressTable->where('workout.workout_type', '=', 'Normal');    $userProgressTable->where('user.deleted', '=', false);    $userProgressTable->whereRaw('user_progress.completed = true OR (user_progress.completed_cardio_shred = true AND ((workout.level = \'Long Cardio\') OR (workout.level = \'Long Cardio (Burn)\') OR (workout.level = \'Long Cardio (Hardcore)\'))');    $userProgressTable->where('user_progress.user_id', '=', $user->id);    return $userProgressTable->count();我的問題是,如果我使用 Eloquent 模型/查詢方式,上面的查詢會是什么樣子?
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻1830條經(jīng)驗 獲得超3個贊

首先,您必須擁有模型類本身,并正確設(shè)置任何關(guān)系。從您共享的代碼中,我看到了三個不同的模型。通常,您希望每張桌子都有一個模型,但這也有點依賴于桌子。例如,您不需要一個用于數(shù)據(jù)透視表(但您可以擁有一個)。


class UserProgress extends Eloquent

{

    ...

}


class FosUser extends Eloquent

{

    ...

}


class workout extends Eloquent

{

    ...

}

您可以為類命名任何您喜歡的名稱,它們不必與表名匹配(有關(guān)詳細(xì)信息,請參閱文檔:https ://laravel.com/docs/5.8/eloquent#eloquent-model-conventions )。


然后將您的關(guān)系添加到需要它們的每個模型(https://laravel.com/docs/5.8/eloquent-relationships),然后您就可以開始查詢了。它可能看起來像這樣:


$result = UserProgress::join('fos_user', 'fos_user.id', '=', 'user_progress.user_id')

    ->join('workout', 'workout.id', '=', 'user_progress.workout_id')

    ->whereRaw('...')

    ...

    ->where('user_progress.user_id', '=', $user->id)

    ->get(); // this returns a Collection object


return $result->count(); // This is a Collection method

這只是一個示例,您可以通過多種方式構(gòu)建 where 子句(where('user_id', '=', $user.id)vswhereUserId($user.id)等),但應(yīng)該足以讓您入門。


此外,對于這個特定的查詢,您實際上只需要第一個模型,但最終您可能最終會使用其他兩個表的模型。


查看完整回答
反對 回復(fù) 2022-06-11
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號