我有一个有多个表的数据库。 我想在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数据。 那么我怎样才能同时显示帖子和视频数据呢?
同时传递两个模型:
<?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'));
}
}