2017-11-09 8 views
0

私はVue.JSとLaravelで1ページのアプリケーションを構築しようとしています。 最新トピックを表示したい。Laravelクエリが余分なjsonとして参加する

TopicController:

public function index() 
{ 
    return response()->json(Topic::allTopics()); 
} 

トピック:どのように私は余分なJSONとして著者を作ることができます

[ 
    {"id":322,"title":"mytitle..","author_id":"authorname"}, 
    {"id":321,"title":"anothertitle..","author_id":"authorname.."} 
] 

:これにより

public static function allTopics() 
{ 
    return Topic::select('id', 'title', 'author_id') 
     ->orderBy('created_at', 'desc') 
     ->limit(10) 
     ->get(); 
} 

私はこのような何かを得ましたか。 Like

id: N, 
title: "title", 
author_id: 5 
    author_name: "Name", 
    author_avatar: "default.png" 

など。私はユーザーテーブルに参加することができますが、これは追加のjsonではありませんか?カスタムjsonをビルドするにはどうすればいいですか?事前と私の悪い英語のため申し訳ありませんのおかげで;)

答えて

1
$result = Topic::select('id', 'title', 'author.author_name as author_id') 
->join("author",'author.id','=','topic.author_id') 
    ->orderBy('created_at', 'desc') 
    ->limit(10) 
    ->get(); 
$array = []; 
foreach($result as $data){ 
    $array[] = [ 
    'id'=> $data->id, 
    'key_name2'=> $data->title, 
    ...... 

    ]; 
} 

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

まさに私が必要としたもの。ありがとうございました ! – DisplayName

0

この

Topic::select('id', 'title', 'author.author_name as author_id') 
->join("author",'author.id','=','topic.author_id') 
    ->orderBy('created_at', 'desc') 
    ->limit(10) 
    ->get(); 
+0

'私は、ユーザーのテーブルを結合することができることを知っているが、これは余分なjson'ことはありませんが試してみてください:) – DisplayName

関連する問題