我有这张桌子instruction_title
和这张桌子instruction_body
。一个指令标题可以具有一个或多个指令主体。在我的资源控制器instController
中,索引功能正在显示指令标题列表,在单击时将转到显示功能并显示其具有的主体。
如果指令ID为25,它将转到/instructions/25
。
但是我需要带有下一个按钮的/instructions/25/Body1
之类的东西,如果它具有body2,接下来它会转到/instructions/25/Body2
并继续。
答案 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-many
:
Read here
然后,您可以获取属于特定标题的主体,例如:
//in your controller
$datas = Title::find(25)->with('bodies');
然后您可以遍历它以获取ID。