我是新来的Laravel公司的,我需要一些关于查询的帮助。
我有三张桌子:
我为每个人创建了一个有关系的模型(而且一切都很好.)
现在我需要构建一个查询(用Maatwebsite/ Excel在Excel中导出)。我需要所有的记录:
,我可以这样做,但我的问题是,我需要在一个线上所有的 ...ES:假设我们有3个电缆和2个特性。在数据库中
电缆:
功能:
Cable_Feature的情况是:
现在我需要查询这个结果(一行1)
发布于 2019-08-04 12:51:27
没有Laravel的查询如下所示:
SELECT code,
GROUP_CONCAT(`value`)
FROM cable_feature
JOIN cables
ON cables.id = cable_feature.cable_id
GROUP BY cables.code; 您可以在这里使用构建它。
请记住,如果您的group_concat_max_len值越来越大,那么就需要在MySQL中设置alter group_concat变量。例:SET SESSION group_concat_max_len = 10000;
发布于 2019-08-04 12:56:26
你还没有分享你的模型代码。所以我假设你在你的模型中有这样的关系。我使用的是电缆型号
public function features()
{
return $this->belongsToMany('App\Feature')
->withPivot('value');
}现在在你的控制器里
public function getAll()
{
$cables = Cable::all();
foreach ($cables as $cable)
foreach ($cable->features $feature)
{
echo $cable->code; //this is from the cable table
echo $feature->name; //this is from the feature table
echo $feature->pivot->value; //this is coming from the pivot table
}
}
}你也可以在你的刀刃上这样做。
发布于 2019-08-05 09:33:44
首先,谢谢你对我的帮助。
说明:我用意大利语写过(Cavi =线缆,特点= Caratteristiche)
我已经解决了一点代码,但我认为不是一个好的超优雅的解决方案(但工作;)
Maatwebsite/Excel包使您能够构建要导出的$data。我已经建立了所有这样的:
$cavi = Cavo::with('famiglia', 'caratteristiche')->get();
return $cavi->map(function($cavo) {
foreach ($cavo->caratteristiche as $caratteristica) {
if($caratteristica->id == 5 || $caratteristica->id == 7) {
$caratteristicheCavo[] = $caratteristica->pivot->valore;
}
}
return $datiEplanArray = [
'ParNumber' => "AGE" . $cavo->codice_articolo,
'TypeNumber' => $cavo->famiglia->codice_articolo,
'OrderNumber' => $cavo->codice_articolo,
'Designation EN' => $cavo->famiglia->nome,
'Description EN' => $cavo->famiglia->descrizione,
'Document/Link 1' => '/ita/pdf/' . $cavo->famiglia->codice_articolo . '.pdf',
'Description Doc. 1 EN' => '/en//pdf/' . $cavo->famiglia->codice_articolo . '.pdf',
'ExternalDiameter / ND' => $caratteristicheCavo[1],
'Connections / Number ' => $caratteristicheCavo[0],
'Cable type' => $cavo->famiglia->nome,
'PreviewPicture' => '/immagini/' . $cavo->famiglia->immagine,
'EDP catalogue structure level 1 EN' => 'Cavo',
];
});https://stackoverflow.com/questions/57346546
复制相似问题