将多个模型(表)发送到同一视图Laravel

时间:2018-03-09 10:52:57

标签: database laravel controller routing blade

我试图找到答案,但却很努力。我正在练习使用MVC。我能够将一个完整的表从数据库返回到视图并显示它的内容。我正在努力的是对同一数据库中的第二个表做同样的事情。有没有办法将两个单独的表返回到同一个视图中?如果我想将三个或更多单独表中的数据显示到同一页面(视图),该怎么办?怎么能这样做?我将不胜感激任何帮助和解释。如果我的解释不明确,请告诉我。

Controller DBController.php         

namespace App\Http\Controllers\example;

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;

class DBController extends Controller
{
    /**
     * Show a list of all of the application's users.
     *
     * @return Response
     */
    public function hakunamatata()
    {
        $tests = DB::table('somename')->get();                              

        return view('pages.testcursorfollow', ['tests' => $tests]);
    }
    public function testowanie()
    {
        $checks = DB::table('somename2')->get();

        return view('pages.testcursorfollow', ['checks' => $checks]);
    } 
}

我在web.php中的路线:(我知道'kursor'部分对于两者都不应该相同,但这是想法,将它们返回到同一视图;或者如果需要则返回三个或更多)

Route::get('kursor', 'example\DBController@hakunamatata');
Route::get('kursor', 'example\DBController@testowanie');

我的观点testcursorfollow.php:

<table style="border: 1px solid black;">
  <tr>
    <th>ID</th>
    <th>col1</th>
    <th>col2</th>
    <th>col3</th>
    <th>col4</th>
    <th>col5</th>
  </tr>
  @if (isset($tests))
  @foreach ($tests as $user)
  <tr>
    <td>{{$user->id}}</td>
    <td>{{$user->col1}}</td>
    <td>{{$user->col2}}</td>
    <td>{{$user->col3}}</td>
    <td>{{$user->col4}}</td>
    <td>{{$user->col5}}</td>
  </tr>
@endforeach
@endif


</table>

<table style="border: 1px solid black;">
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Surname</th>
  </tr>

 @foreach ($checks as $check)
  <tr>
    <td>{{$check->id}}</td>
    <td>{{$check->Name}}</td>
    <td>{{$check->Surname}}</td>
  </tr>

@endforeach
</table>

1 个答案:

答案 0 :(得分:1)

你可以用compact来做到这一点。

例如:

function getStuff() {
  $posts = DB::table('posts')->get();
  $comments = DB::table('comments')->get();

  return view('pages.testcursorfollow', compact('posts', 'comments'));
}