2016-07-31 16 views
1

Momentan zeige ich Video auf meiner Seite an, sobald ich darauf klicke, werde ich auf/video {video}/view weitergeleitet (wobei {video} video id ist).Laravel zeigt verschiedene Posts auf verschiedenen Seiten an

@foreach($videos as $video) 
      <div class="col-sm-4 feature"> 
       <div class="panel"> 
        <div class="panel-heading"> 
         <h3 class="panel-title video_name">{{ $video->video_name }}</h3> 
        </div> 
        <div class="embed-responsive embed-responsive-16by9"> 
        <iframe width="320" height="250" class="embed-responsive-item" 
        src="https://www.youtube.com/embed/{{ $video->video_url }}" allowfullscreen="allowfullscreen" mozallowfullscreen="mozallowfullscreen" msallowfullscreen="msallowfullscreen" oallowfullscreen="oallowfullscreen" webkitallowfullscreen="webkitallowfullscreen"> 
        </iframe> 
        </div> 
        <div class="info"> 
        <p>Posted by {{ $video->user->first_name }} on {{ $video->created_at }}</p> 
         <hr class="postInfo"> 
        </div> 

        <p>{{ $video->description }} </p> 
        <a href="{{ route('view.video', [$video->id]) }}" class="btn btn-danger btn-block">Continue to video</a> 
       </div> 
      </div> 
     @endforeach 

Ich habe erstellt Beiträge in meiner Datenbank

Schema::create('posts', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->timestamps(); 
     $table->text('body'); 
     $table->integer('user_id'); 
     $table->integer('video_id'); 
    }); 

Aber das Problem ist, ich weiß nicht, wie kann ich verschiedene Beiträge über verschiedene Videos anzuzeigen, erhalte ich User_id aber ich kann nicht hol dir video_id.

Beitrag erstellen Funktion:

public function postCreatePost(Request $request) { 
    $post = new Post(); 
    $post->body = $request['body']; 
    $request->user()->posts()->save($post); 
    return redirect()->route('dashboard'); 
} 

Antwort

0

Ich hatte id meine Routen zu geben, wo ich bin Entsendung und dann post- $> Video() -> Associate ($ video_id); mit meiner Videos ID.

0

Werfen Sie einen Blick auf die docs https://laravel.com/docs/5.2/eloquent-relationships

Dinge, die Sie erstellen gehst ist Beziehung genannt, und ich nehme an, es 00.59 auf Video sein wird und post, dann eins zu viele auf Benutzer und sowohl für Video und Post.

Ich bin mir nicht sicher, wie Sie den Benutzer bekommen. Aber zuerst muss der Fremdschlüssel definiert werden.

Schema::create('posts', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->timestamps(); 
    $table->text('body'); 
    $table->integer('user_id'); 
    $table->integer('video_id'); 

    $table->foreign('user_id') 
      ->references('id')->on('users'); 
    $table->foreign('video_id') 
      ->references('id')->on('videos'); 
}); 

Sie werden Fremdschlüssel auch auf den anderen Tabellen anwenden. Wie auch immer, ich nahm an, dass diese zwei in Beziehung stehenden Tabellen users und videos sind. Als nächstes wenden Sie diese Beziehung an.

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    /** 
    * Get the post associated by the user. 
    */ 
    public function posts() 
    { 
     return $this->hasMany('App\Post'); 
    } 
} 

Wieder war ich davon ausgegangen, dass Sie unter App Namespace sind. Dann für die Post.

class Post extends Model 
{ 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 

    public function video() 
    { 
     return $this->hasOne('App\Video'); 
    } 
} 

Letzte, Video.

class Video extends Model 
{ 
    public function post() 
    { 
     return $this->belongsTo('App\Post'); 
    } 
} 

Ich wiederhole meine erste Annahme. Sie werden wahrscheinlich eins zu eins auf Post und Video haben, dann eins zu viele auf Benutzer und Post. Was bedeutet, dass ein Benutzer viele Posts haben kann, denen der Post ein Video geben wird.

Controller, wenn meine Annahme zu diesem Zeitpunkt richtig ist, könnte es ähnlich aussehen.

//You might want to use route model binding instead 
//@see https://laravel.com/docs/5.2/routing#route-model-binding 

public function showPost(Request $request, $post) { 
    $post = \App\Post::where('id', $post)->with('video')->get(); 

    return view('template.post', ['post' => $post]); 
} 

public function showVideo(Request $request, $video) { 
    $video = \App\Video::where('id', $video)->with('post')->get(); 

    return view('template.video', ['video' => $video]); 
} 

public function postCreatePost(Request $request) 
{ 
    $post = new Post(); 
    $post->body = $request['body']; 
    $request->user()->posts()->save($post); 

    $video = new Video(); 
    $video->id = $request['video']; 
    $post->video()->save($video); 

    return redirect()->route('dashboard'); 
}