2017-10-09 7 views
1

私はニュース記事を持っており、特定のフィールドをJSONに渡したいと思います。JSONとループでLaravel Eloquent

私はループにこのコードのすべてのニュースを試してみた:

public function appNews() { 
    $news = News::orderBy('id', 'desc')->get(); 

    foreach($news as $newsOne) { 
    $title = $newsOne->title; 
    $body = $newsOne->body; 
    $image = $newsOne->image; 


    return response()->json([ 
     'title' => $title, 
     'body' => $body, 
     'image' => $image 
    ]); 

    } 
} 

をしかし、これではなく、多くの結果を1つ返します。私はこのコードのすべての必要な結果を得るループをエコー場合

は:

public function appNews() { 
    $news = News::orderBy('id', 'desc')->get(); 

    foreach($news as $newsOne) { 
    $title = $newsOne->title; 
    $body = strip_tags($newsOne->body); 
    $image = $newsOne->image; 

    echo '<div>' . $newsOne->title . '</div>'; 

    /*return response()->json([ 
     'title' => $title, 
     'body' => $body, 
     'image' => $image 
    ]);*/ 

    } 
} 

にはどうすれば解決することができる応答を持つ() - > JSON()ので、私はすべての結果を得ることができますか?

答えて

2

1つの配列を作成し、あなたの実際のコードは次のようになりますと仮定すると、それ

public function appNews() { 
    $news = News::orderBy('id', 'desc')->get(); 
    $array = []; 
    foreach($news as $newsOne) { 
    $title = $newsOne->title; 
    $body = strip_tags($newsOne->body); 
    $image = $newsOne->image; 

    $array[] = [ 
     'title' => $title, 
     'body' => $body, 
     'image' => $image 
    ]; 

    } 

    return response()->json($array); 
} 
+0

ワンダフル!どうもありがとうございました。私はあなたの答えを数分で受け入れます。 – satvision83

2

を追加し、最善の方法は、おそらく次のようになります。

// here you select only fields you need 
$news = News::select('title', 'body', 'image')->orderBy('id', 'desc')->get(); 

// here you return changed content of body by striping tags 
return response()->json($news->map(function($singleNews) { 
    $singleNews->body = strip_tags($singleNews->body); 
    return $singleNews; 
})->all());