2017-10-07 101 views
0

這是我的模型Laravel:排序依據相關表格,並與

  • 用戶
  • 角色

和關係的模型之間有很多很多。

我想這樣的創建查詢:

return User::with('roles')->orderBy('roles.id')->paginate(); 

我不想做join因爲我創建了一個基類每一個模型。我也不想在get之後使用orderBy,因爲它必須加載我所有的數據,之後我應該可以對它進行分類和分頁。所以這不是一個好主意。

+0

沒有加入是不可能的(AFAIK)。 –

回答

0
User::where('role_id','!=','0')->orderBy('role_id','DESC')->paginate(10); 
+0

通常最好是解釋一個解決方案,而不是隻發佈一些匿名代碼行。你可以閱讀[我如何寫一個好的答案](https://stackoverflow.com/help/how-to-answer),還有[完全解釋基於代碼的答案](https://meta.stackexchange.com /問題/ 114762 /解釋-entirely-%E2%80%8C%E2%80%8Bcode基於-答案)。 –

1

你可以嘗試這樣的事情:

return User::with(['roles' => function ($query) { 
     $query->orderBy('id', 'desc'); 
    }])->paginate(); 

但這隻會責令預先加載的屬性,但如果你有興趣使用的加入,你可以有這樣的事情:

return User::with('roles') 
    ->join('roles', 'user.id', '=', 'roles.user_id') 
    ->orderBy('roles.id', 'desc') 
    ->paginate(); 

在此您可以輕鬆使用paginate,這是您的主要關注點。

希望這會有所幫助。