2017-04-16 18 views
0

ページネーションに問題があります。laravelでmakeHiddenを使用する正しい方法

すべてがエラーなしで正常に動作しますが、問題は、私は私のコードでmakeHiddenを使用する場合、それは私のJSONのページ付け結果の構造を変更され

これは二行目の結果なしに私のコード

$result = Job::where('user_id','=',Auth::id())->paginate(5); 

    $result= $result->makeHidden(['hasMessage']); 

です

{ 
    total: 1 , 
    per_page: 5, 
    current_page: 1, 
    last_page: 1, 
    next_page_url: null, 
    prev_page_url: null, 
    from: 1, 
    to: 1, 
    data: [ 
     { 
     id: 4, 
     sid:125, 
     hasMessage: true 
    } 
     ] 
} 

ですが、私は

を使用する場合

私は

[ 
    { 
     id: 4, 
     sid:125, 
    } 
    ] 

に任意のアイデアをしてくださいましたか? ? ?それはバグですか、何か間違っていますか? ?

hasMessageあなたはあなたのコードでtoArray()が欠落しているわけではない本物の列

答えて

0

アペンドフィールドです。それは次のようにする必要があります:

$result= $result->makeHidden(['hasMessage'])->toArray(); 

のドキュメントを見てください:

https://laravel.com/docs/5.4/eloquent-serialization#hiding-attributes-from-json

編集:

私もpaginateに試してみましたが、それはリターンをしました変更された配列であり、makeHidden()の期待される出力です。それはあなたのJSONレスポンスをdistotes array_mergeやっていると

public function makeHidden($attributes) 
    { 
     $attributes = (array) $attributes; 

     $this->visible = array_diff($this->visible, $attributes); 

     $this->hidden = array_unique(array_merge($this->hidden, $attributes)); 

     return $this; 
    } 

はまた、機能を見ている可能性があります。最終的に私は小さなプログラミングトリック

$result = Job::where('user_id','=',Auth::id())->paginate(5); 
$data =$result; 
$result= $result->makeHidden(['hasMessage']); 
$data->data = $result; 
return $data 

でそれをやった

+0

に感謝します結果の変更 – programmer

+0

私はあなたのリンクを見ていました。ドキュメンテーションでも:モデルが配列またはJSONに変換されると、他のすべての属性は隠されます: – programmer

+0

これは 'makeHidden()'の予想される動作です。また、関数を見ることもできます。 – PaladiN

1

は、残念ながら、私は同じ結果を持って、問題がJSONまたは配列の問題は私の全体の構造であるを取得することではありませんあなた

関連する問題