我在使用者和課程之間有一個多對多關係,其中包含一個資料透視表Users_Courses,其中包含isComplete
值,但我似乎無法在不循環每個使用者並獲取他們的課程的情況下檢索isComplete
值然後循環每個課程取得樞軸資料。
我發現的所有範例都是將isComplete
值對應到帶有循環的課程,但這似乎對程式造成了極大的負擔,而且我並沒有真正發現它有吸引力,這就是為什麼我要製作我的自己的問題在這裡。如果我還沒有看到這個問題的答案,請在下面鏈接它,因為我似乎找不到它。
此外,我正在使用 Laravel-9 和 MySQL。
我現在檢索的資料結構如下所示:
"data": [ { "id": 2, "fname": "name", "lname": "last name", "email": "mail@mail.com", "courses": [ { "id": 1, "name": "test_course_1", "description": "this is a test course for testing" }, { "id": 2, "name": "test_course_2", "description": "this is also a test course" }, { "id": 3, "name": "test_course_3", "description": "this course is a test course" } ] } ]
我正在尋找一種方法來檢索樞軸值 isComplete
與 Eloquent 並獲取課程本身的數據,就像這樣或類似的東西。
換句話說,我想透過資料透視表值 isComplete
來檢查使用者是否完成了課程,如下例所示。 < /p>#
"data": [ { "id": 2, "fname": "name", "lname": "last name", "email": "mail@mail.com", "courses": [ { "id": 1, "name": "test_course_1", "description": "this is a test course for testing", "isComplete": 1 }, { "id": 2, "name": "test_course_2", "description": "this is also a test course", "isComplete": 0 }, { "id": 3, "name": "test_course_3", "description": "this course is a test course", "isComplete": 0 } ] } ]
我現在的程式碼如下所示:
class User extends Authenticatable { public function courses() { return $this->belongsToMany(Course::class, 'user_courses') ->withPivot('isCompleted'); } }
class Course extends Model { public function users() { return $this->belongsToMany(User::class, 'user_courses') ->withPivot('isCompleted'); } }
class UserController extends Controller { public function getUsersById(int $user_id) { try { $users = User::where('id', $user_id) ->with('courses') ->get(); return response()->json([ 'success' => true, 'data' => $users ]); } catch (Throwable $th) { return response()->json([ 'success' => false, 'data' => null, 'message' => $th, ]); } } }
我知道它在程式碼中稱為 isCompleted
,但在資料庫中也這麼叫。這是一個尚未修復的打字錯誤:D
換句話說,我想透過資料透視表值 isComplete 檢查使用者是否已完成課程,如下例所示。
您是否在文件中閱讀了有關使用資料透視表列進行過濾的資訊:https://laravel.com/docs/9.x/eloquent-relationships#filtering-queries-via-intermediate- table-columns
如果您只需要完成的課程,您可以將關係稱為
或您可以為模型中的已完成、未完成建立自訂關係。
在使用者控制器中,您可以將它們稱為