我的模型,控制器和数据库迁移已经正常工作,我可以检索显示数据。
clients.blade.php
@foreach ($table_companies as $client)
{{ $client['geography'] }} - {{ $client['company'] }} - {{ $client['country'] }} - {{$client['industry'] }}
@endforeach
ClientsController.php
public function showClients() {
$table_companies = Clients::selectRaw(' name_company company, geography geography, country country, type_industry industry, emphasize bold')
->groupBy('company', 'geography', 'country', 'industry', 'bold')
->get()
->toArray();
return view('about.our-clients', compact('our-clients', 'table_companies'));
2017_12_12_173246_create_clients_table.php
Schema::create('table_companies', function (Blueprint $table) {
// $table->increments('id');
// $table->timestamps();
$table->increments('ID_CLIENT');
$table->string('NAME_COMPANY');
$table->string('TYPE_INDUSTRY');
$table->string('COUNTRY');
$table->string('GEOGRAPHY');
$table->integer('emphasize');
$table->timestamps();
});
}
我要做的是格式化数据并按地理位置传递url参数
对其进行分组示例1:/our-clients.php?geography=North_America
将他们分组为:
北美洲 USACANADA 前沿|联邦法院
示例2:/our-clients.php?geography=Europe
欧洲
比利时
丹麦 Skandina |国家警察
有什么想法吗?
答案 0 :(得分:1)
您可以将groupBy
子句更改为使用请求参数:
...
->groupBy('company', request()->get('geography'), 'country', 'industry', 'bold')
->get()
->toArray()
答案 1 :(得分:1)
获取所有记录后使用groupBy()
将其作为group of records
与geography
的关联。
$table_companies = Clients::selectRaw(' name_company company, geography geography, country country, type_industry industry, emphasize bold')
->get()
->groupBy('geography')
->toArray();
答案 2 :(得分:1)
它看起来好像要过滤地理位置?还是分组?但如果是后者,为什么你有这个参数?不太清楚。
因此,如果您想过滤,您显然应在查询中包含where('geography',request() - > geography)。
您也可以使用filter()方法获取所有内容并进行过滤 https://laravel.com/docs/5.5/collections#method-filter
$filtered_table_companies = $table_companies->filter(function ($value, $key) {
return $value->geography == request()->geography;
});
如果您不需要其他地方的其他地区,我会建议使用Eloquent版本。
如果你想按国家分组,我会建议你 https://laravel.com/docs/5.5/collections#method-maptogroups
$grouped_table_companies = $table_companies->mapToGroups(function ($item, $key) {
return [$item->geography] => $item;
});
尝试修改一次以查看其输出并尝试理解它 然后,您可以在刀片文件中使用2个嵌套的foreach遍历该集合,例如
@foreach($grouped_table_companies as $region => $regional_table_companies)
<div>{{ $region }}</div>
@foreach($regional_table_companies as $table_company)
// output stuff here
@endforeach
@endforeach
如果你想早期使用groupby而不是过滤器,你可以在你的过程中显然执行2个mapToGroups(),只需稍微修改一下;)