2017-11-15 10 views
0

私はタイトルとボディ属性でしかデータを取得できませんが、名前のデータを取得すると、ページを更新すると空になりますが、自動的に投稿すると表示されます。Laravel angleを使ってuser_idで名前を取得する方法は?

何らかの理由でが名前を正常に取得していません。

注:私はを使用しています。例えば

ここ:

ここでは、サーバー側である:

のPostController

public function getPosts() { 

    $posts = Post::with('user')->get(); 
    $response = new Response(json_encode($posts)); 
    $response->headers->set('Content-Type', 'application/json'); 
    return $response; 
} 

public function storePost(Request $request) { 
    $data = request()->validate([ 
    'title' => 'required|max:120', 
    'body' => 'required|max:1000' 
    ]); 

    $data['user_id'] = auth()->user()->id; 
    $data['name'] = auth()->user()->name; 

    $post = Post::create($data); 

    $response = new Response(json_encode($data)); 
    $response->headers->set('Content-Type', 'application/json'); 


    // return redirect('/home')->withMessage('A new post was created.'); 

    return $response; 
} 

main.js

$scope.myposts = {}; 

$scope.addPost = function() { 

    $http.post('/auth/post', { 
    title: $scope.post.title, 
    body: $scope.post.body 

    }).then(function(data, status, headers, config) { 
    console.log(data); 
    $scope.myposts.push(data.data); 

    }); 

    $scope.post.title = ''; 
    $scope.post.body = ''; 

}; 

$scope.deletePost = function(post) { 
    var index = $scope.myposts.indexOf(post); 

    if (index != -1) { 
    $scope.myposts.splice(index, 1); 
    } 

    $http.delete('auth/post/' + post.id); 
}; 

$scope.getPosts = function() { 

    $http.get('/auth/posts').then(function(data) { 
    $scope.myposts = data.data; 
    }).then(function(data, status, header, config) {}); 
}; 

HTML:

<div id="mypost" class="col-md-8 panel-default" ng-repeat="post in myposts"> 
    <div id="eli-style-heading" class="panel-heading"> 
    <% post.title %> 
    </div> 
    <div class="panel-body panel"> 
    <figure> 
     <p> 
     <% post.body %> 
     </p> 
     by: 
     <p> 
     <% post.user.name %> 
     </p> 

    </figure> 
    <span><button ng-click="deletePost(post)">x</button></span> 
    </div> 
</div> 

私は最初のリフレッシュせずにコンテンツを追加します(非同期)

ページ更新の (別のポストごとに異なるログ)上記

+0

申し訳ありませんが、さらに説明することができます – Beginner

+0

ああ、あなたの問題は表示されません。 – Beginner

+0

確かに、私は投稿のユーザーとその名前を表示する投稿を追加すると、ページを更新するとユーザーの名前が消えます。スレッド内のイメージのようなタイトルとボディ属性のみを表示します。 画像に表示される最初の投稿は、ユーザー名のないタイトルと本文の内容です 画像に表示される2番目の投稿はタイトルと本文ですが、ユーザー名はそのままですが、名前を更新すると消えます – BARNOWL

答えて

1

あなたのリロードページ大丈夫ですか?

$posts = Post::with('user')->get(); 

戻り

{ 
    "title": "title", 
    "body": "body", 
    "user": { 
     "name": "name" 
    } 
} 

とあなたの角度であなたはあなたが追加したときにそれを表示するための解決策は、アレイ

$scope.addPost = function() { 

    $http.post('/auth/post', { 
    title: $scope.post.title, 
    body: $scope.post.body 

    }).then(function(data, status, headers, config) { 
    console.log(data); 

    data.data['user'] = { 
     name: data.data.name 
    } 

    $scope.myposts.push(data.data); 

    }); 

    $scope.post.title = ''; 
    $scope.post.body = ''; 

}; 
にプッシュする前に、あなたのJSONオブジェクトを再構築することである

<% post.user.name %> 

ことによってそれを表示します

+0

ありがとうございました。どうもありがとうございます。 – BARNOWL

+0

あなたは参考文献のように、このような情報を得ています。 – BARNOWL

関連する問題