に選択特定の列で作業していないパジネート:Laravelは私がロールモデルに以下のように定義された(多くの多くの)ユーザーの役割の関係を持っているquerybuilder
を今、私は一定の役割内のすべてのユーザーを表示したいです。私は、次のコマンドを実行します。ここでは
$list = Role::find(1)->users()->select('name')->orderBy('name')->paginate(10);
$list
は、IDが1のロールに所属するすべてのユーザーが含まれており、それが正しいです。しかし、問題は:$list
にブレークポイントを追加すると、すべてのユーザーモデルの属性が、select('name')
のように取得され、影響がないことが示されます。 これは、特に私が$list
をjsonとして返す場合に大きな問題です。ユーザーパスワードが$hidden
のユーザーモデルの配列に含まれていてもユーザーパスワードが取得されます。 私の質問は
なぜquerybuilderのpaginate()
はのモデルの$hidden
配列の属性を尊重しないのですか?
注:私が望むことを達成するための他の解決策があることを知っています。私はちょうど何が起こっているのか把握するために私の質問に答えたいですか?
Uは悪い方法でFIND()を使用します。読んでください:https://laravel.com/docs/5.5/eloquent#retrieving-単体モデル –