所以我在我的' bugoverview '中遇到了错误。页。 (太讽刺了)..
在从数据库中删除了一个错误(id : 7
被删除)之后,我发现这种奇怪的订单方式
无论如何,问题如图所示:
我在一个简单的刀片foreach中得到所有行。
我的查询代码是:
$bugs_all = Bug::with('klant','user')->orderBy('id','asc')->get();
和
$projects_all = Project::all();
我的foreach代码:
@foreach($projects_all as $project)
@foreach($bugs_all as $bug)
@if(count($bugs_all) > 0)
@if($bug->project_id == $project->id)
<tr>
<td>{{$bug->id}}</td>
<td>{{substr($bug->titel,0,15)}}...</td>
<td>{{$bug->status}}</td>
<td>{{$bug->soort}}</td>
<td>
@if($bug->prioriteit == 'laag')
<span class="label label-success">Laag</span>
@elseif($bug->prioriteit == 'gemiddeld')
<span class="label label-warning">Gemmideld</span>
@elseif($bug->prioriteit == 'hoog')
<span class="label label-danger">Hoog</span>
@elseif($bug->prioriteit == 'kritisch')
<span class="label label-purple">Kritisch</span>
@else
<span class="label label-info">Geen prioriteit</span>
@endif
</td>
<td>{{date('d-m-y - H:i',strtotime($bug->eind_datum))}}</td>
@if($bug->klant)
<td>{{$bug->klant->voornaam .' '.$bug->klant->tussenvoegsel.' '. $bug->klant->achternaam}}</td>
@endif
<td>{{$project->projectnaam}}</td>
@if($bug->user)
<td>{{$bug->user->voornaam .' '.$bug->user->tussenvoegsel.' '. $bug->user->achternaam}}</td>
@else
<td>Geen</td>
@endif
<td>
<a href="/bugchat/{{$bug->id}}" class="">
<button type="submit" class="btn btn-success btn-xs">
<i class="glyphicon glyphicon-search"></i>
</button>
</a>
</td>
</tr>
@endif
@endif
@endforeach
@endforeach
答案 0 :(得分:2)
您的案例中的问题是,您有一个遍历不同项目的外部循环。由于每个错误都与不同的项目相关联,因此您对项目ID的检查会“破坏”错误的排序。在您的代码中,每个项目都会对错误进行排序....
但你甚至不需要那个外循环。如果您在错误模型中定义 belongsTo 关系,则只需访问以下错误:
@foreach($bugs_all as $bug)
$bug->project->projectnaam;
....
@endforeach
因此,您可以获得有关错误项目的所有信息,并保留您定义的顺序。
答案 1 :(得分:1)
这个问题含糊不清,没有看到ERD或你的表/关系结构,很难真正帮助。
但是,我假设您使用的是InnoDB,并且您没有正确地订购关系。
首先,InnoDB是一个将重新使用已删除空间的引擎。例如:您创建记录1,2和3.然后删除记录2并创建记录4.默认顺序为 auto_increment 按升序排列(id
ASC未明确排序)。
据说你的错误顺序如下:1,4,3 - 这只是因为记录4取代了记录2的空间(以前删除过)。
其次,我只是建议你正确地建立你的关系。我假设您的项目与Bugs有关?以下几行就足够了:
// Inside your Project model.
public function bugs()
{
return $this->hasMany('App\Bug', 'bug_id', 'id')
->orderBy('id', 'ASC');
}
// Inside your Bug model.
public function project()
{
return $this->belongsTo('App\Project', 'bug_id', 'id');
}
获取所有项目的所有错误:
$projects = Project::with('bug.klant', 'bug.user')->all();
在您的刀片模板中,您可以执行以下操作:
@foreach ($project->bugs as $bug)
{{ $bug->user }}
{{ $bug->klant }}
@endforeach