提问者:小点点

如何在同一个刀片模板上查看两个表的数据(视图)?


我有一个有多个表的数据库。 我想在laravel应用程序上显示DB数据。 我想在同一个页面上显示两个表的数据。 我已经为应用程序创建了模型,视图和控制器,但是我只能显示一个表。 我不能给你看另一张桌子。 我认为我需要定义一个具有多个关系的模型,但我不知道如何去做。

我的表被称为帖子和视频我的模型上没有任何东西。 控制器和视图如下所示。

控制器

namespace App\Http\Controllers;

use App\Post;
use App\Video;
use Illuminate\Http\Request;

class PostsController extends Controller
{
    public function index() 
    {
        $posts = Post::all();
        return view('landing')->with('posts', $posts);
    }
}

查看

@extends('layouts.app')
@extends('layouts.navbar')

@section('title')
    Landing Page
@endsection

@section('content')
<main class="py-4">
  <div class="container">
    <div class="row">
      <div class="col-md-8">
        <h3>Section 1</h3>
        @foreach ($posts as $post)
          <ul class="list-group">
            <li class="list-group-item">
            <a href="/posts/{{ $post->id }}">
                {{ $post->title }}
                {{ $post->brief }}
                {{ $post->body }}
                {{ $post->cover_image }}
            </a>
            </li>
          </ul>
        @endforeach
      </div> 
      <div class="col-md-4">
        <h3>Section 2</h3>
        @foreach ($videos as $video)
          <ul class="list-group">
            <li class="list-group-item">
              <a href="/videos/{{ $video->id }}">
                {{ $video->title }}
              </a>
            </li>
          </ul>
        @endforeach
      </div>
    </div>
  </div>
</main>
@endsection

web.php上的路由

<?php

use App\Http\Controllers\PagesController;
use Illuminate\Support\Facades\Route;

Route::get('/', 'PostsController@index');
Route::get('/', 'VideosController@index');
Route::get('/posts/{post}', 'PostsController@show');


Route::resource('posts', 'PostsController');
Route::resource('videos', 'VideosController');


Auth::routes();

视频数据表控制器

<?php

namespace App\Http\Controllers;

use App\Video;
use Illuminate\Http\Request;

class VideosController extends Controller
{
    public function index() 
    {
        $videos = Video::all();
        return view('landing')->with('videos', $videos);
    }
}

如果我删除web.php上的视频路由,我可以看到posts数据。 那么我怎样才能同时显示帖子和视频数据呢?


共1个答案

匿名用户

同时传递两个模型:

<?php

namespace App\Http\Controllers;

use App\Video;
use App\Post;
use Illuminate\Http\Request;

class VideosController extends Controller
{
    public function index() 
    {
        $videos = Video::all();
        $posts = Post::all();
        return view('landing', compact('videos','posts'));
    }
}