如何在Laravel中动态加载多个页面?

时间:2019-01-05 10:42:56

标签: laravel

我有这张桌子instruction_title和这张桌子instruction_body。一个指令标题可以具有一个或多个指令主体。在我的资源控制器instController中,索引功能正在显示指令标题列表,在单击时将转到显示功能并显示其具有的主体。

如果指令ID为25,它将转到/instructions/25。 但是我需要带有下一个按钮的/instructions/25/Body1之类的东西,如果它具有body2,接下来它会转到/instructions/25/Body2并继续。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:


在您的路线上:

Route::get('/instructions/{titleId}/{bodyName}', 'instController@index')->name('titleIndex');

在您的刀片中:

@php 

$currentBodyId = $next = \DB::table('instruction_body')
->orderBy('id', 'asc')->select('id')
->first();

$next = \DB::table('instruction_body')
->where('titleId', $YOUR_TITLE_ID)
->where('id', '>', $currentBodyId)
->sortBy('id')
->first();

$nextUrl = ($next !== null) ? $next->YOUR_BODY_NAME : '#' ;

@endphp

在刀片中的下一个按钮中:

@if ($nextUrl != '#')

<a href="{{ route('titleIndex', ['bodyName' => $nextUrl]) }}">
    Next
</a>

@endif

答案 1 :(得分:0)

@behnam的做法很糟糕。永远不要在表示层中查询数据的逻辑!这就是建立MVC架构的原因。

但是您可以为两个模型附加一个关系one-to-manyRead here

然后,您可以获取属于特定标题的主体,例如:

//in your controller
    $datas = Title::find(25)->with('bodies');

然后您可以遍历它以获取ID。