2016-04-12 69 views
1

我努力工作了幾天,但我不能得到它的工作。排序Laravel收集關係計數

這裏是例子,我有Laravel模型測試,和問題,問題模型裏面有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(); 
    }); 

,但結果是一樣的,收集未排序。

我使用json響應如果重要,當我嘗試echo $ test-> questions-> count();每次測試我都會收到一些問題。

回答

0

原來,當我回到這樣的排序不起作用:

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

但是當我回到這個樣子工作完全正常:

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

對我來說這是很奇怪行爲,我從來沒有遇到過這樣的事情,如果有人能解釋它,我會感激。