2016-04-12 16 views
1

私は数日間は頑張っていますが、うまく動作しません。Laravelコレクションを関係数で並べ替え

ここでは、LaravelモデルのTestとQuestion、Questionモデルの内部にtest_idプロパティがあります。私は、test_id =与えられたテストのidで存在する質問の数でテストコレクションをソートしたい。

私は

$tests = Test::select(
     array(
      '*', 
      DB::raw('(SELECT count(*) FROM questions WHERE test_id = id) as count_questions')) 
    )->with('questions')->orderBy('count_questions','desc')->paginate(5); 

$tests = Test::has('questions', '>', 3)->with('questions')->get()->sortBy(function($test) 
    { 
     return $test->questions->count(); 
    }); 

の両方を試してみましたが、結果は同じで、コレクションがソートされていないです。

私が$ test-> questions-> count()をエコーし​​ようとすると、私はjson応答を使用します。私はすべてのテストのための質問の数を取得します。

答えて

0

それは私がこのように戻ったときに動作しないソートをことが判明:

return response()->json($tests); 

が、私はこのように戻ったとき、それは完全に正常に動作します:私にとって

return response()->json($tests->values()->all()); 

これは非常に奇妙です私はこのようなことに直面したことはありません。もし誰かがそれを説明することができれば、私は感謝するでしょう。