2017-09-12 17 views
0

私は多対多の関係を持つフォームを作成しています。私はポストテーブルとアクティビティテーブルを持っています。ピボットテーブルを使用して、多対多のリンクがあります。投稿に1つ以上のアクティビティを追加するためのフォームを作成しています。私は 'ErrorException'を受け取っています - 非オブジェクトのプロパティを取得しようとしています。なぜこれが動かないのか分かりません。非オブジェクトのプロパティを取得しようとしています - Laravelフォーム

私があなたに提供できる援助に感謝します。

関連コードは以下のとおりです。

//Posts/create.blade.php 

{!!Form::open(['action' => '[email protected]','method' => 'POST', 'class'=>'form-group'])!!} 
    {{Form::bsText('title','',['placeholder' => 'Trip Name'])}} 
    {{Form::bsTextarea('body','',['placeholder' => 'Trip Description'])}} 
    {{Form::bsSubmit('submit')}} 



    {{Form::label('activities', 'Activity:') }} 
    <select class="form-control select2-multi" name="activities" multiple="multiple"> 
    @foreach($activities as $activity) 
    <option value="{{ $activity->id }}">{{ $activity->activity_name}} 
    </option> 
    @endforeach 

    </select> 

{!! Form::close() !!} 

// PostsControllerの

public function create() 
    { 
     $activities = Activity::all(); 
     return view('posts.create')->withActivities($activities); 
     $posts = Post::all(); 

    } 
public function store(Request $request) 
{ 
    // Create a new post using the request data 
    // Save it to the database 
    $this->validate(request(), [ 
     'title' => 'required', 
     'body' => 'required', 

    ]); 
    $post = Post::create([ 
    'title' =>request('title'), 
    'body' =>request('body'), 
    'user_id' => auth()->id(), 
    'activity_id' => id() 
    ]); 



    // And then redirect to somewhere in application 
    return redirect()->route('posts.show', $post->id); 
} 
+0

あなたはその例外をどこで取得しますか?どの行? –

+0

'' activity_id '=> id() 'の' id() 'はどういう意味ですか? – aleksejjj

+0

コメントありがとうございました! id()は 'activity_id' => id()で何を意味していますか? 私は今それが間違いであることを理解しています。 ポイントでブレードからエラーが表示されます - create.blade.phpの30行目が表示されます。だから私はそれがフォームやコントローラのエラーだと仮定します。アクティビティテーブルのIDをユーザテーブルごとに渡す必要があると仮定していますか? '' ' $ post = Post([ 'title' => request( 'title')) 'body' =>リクエスト( 'body')、 'user_id' => auth() - > id()、 ]); –

答えて

0

あなたは空の変数を持っていますが、ブラウザ用/ディスプレイをレンダリングするために、ブレード・ファイルでポイントすると、このエラーがスローのみ。または、DBからレコードを取得した場合、そのような問題を防ぐためにfindOrFailをクエリに追加します。ありがとうございました。

+1

彼は 'all()'メソッドしか使いません。それはクラッシュしないでください。 –

+0

実際に彼は私の前提の通り、いくつか間違ったことをしています。彼はrequest()の代わりに$ requestを置く必要があり、ポストの作成メソッド にid()が入ります。 –

+0

私は '$ request'変数を持つ解決策がよりエレガントだが、問題を引き起こしていないことを知っています。だからそれは質問への答えではありません –

関連する問題