2017-11-28 1 views
0

に選択特定の列で作業していないパジネート: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配列の属性を尊重しないのですか?

注:私が望むことを達成するための他の解決策があることを知っています。私はちょうど何が起こっているのか把握するために私の質問に答えたいですか?

+0

Uは悪い方法でFIND()を使用します。読んでください:https://laravel.com/docs/5.5/eloquent#retrieving-単体モデル –

答えて

0

select('name')は方法が

$list = Role::find(1)->users()->orderBy('name')->paginate(10, ['name']); 

2番目のパラメータとして列を取るのpaginate()ので、あなたは、パラメータや方法についての詳細を読むことができる効果がありませんここ https://laravel.com/api/5.5/Illuminate/Database/Eloquent/Builder.html#method_paginate

+0

ありがとうございます。あなたは正しいです – Usama

1

ユーザーがrole_idが、なぜ、あなたのようにユーザーを取得していない持っているので:

User::where('role_id', 1)->orderBy('name')->paginate(10); 

あなたは、基本的な役割を取得し、その役割に対してリストを取得しています。

+0

私はそれを知っていますが、私の質問はそれではありません。私の質問はなぜquerybuilderのpaginate()はselect()を尊重しないのですか? – Usama

+0

私の関係は多かれ少なかれ中間のテーブルがあります – Usama

+0

今、私は何が起こっているのかを知るためにコードをチェックする必要がありますが、あなたの点はありますが –

関連する問題