所以我有四个表:Laravel合并多行的多个列
- 实验(表) - ID
- feature_classes(列) - ID,EXPERIMENT_ID,标题
- 实体(行) - ID ,EXPERIMENT_ID
- 特征(细胞) - 编号,ENTITY_ID,feature_class_id,值
我需要从这些四个表构造的表。
我尝试这样做:
$experiment_id = $request->input('experiment_id');
$feature_classes = FeatureClass::where('experiment_id', $experiment_id)->select('title', 'id')->get();
$select = [
'entities.id',
'entities.prediction',
'entities.result'
];
foreach ($feature_classes as $f) {
$select[] = $f->id . ".value AS " .$f->id;
}
$entities = DB::table('entities')
->where('experiment_id', $experiment_id);
foreach ($feature_classes as $f) {
$entities = $entities->leftJoin('features AS ' . $f->id, function ($join) use ($f){
$join->on($f->id . '.entity_id', '=', 'entities.id')
->where($f->id . '.feature_class_id', $f->id);
});
}
return $entities
->select($select)
->get();
但我的努力得到回报,出现此错误消息SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1 ? left join
功能 ENTITY_ID =
实体.
ID FE”位于第1行(SQL:选择entities
。 id
,entities
。prediction
,entities
。result
,1
。value
as 1
,2
。 value
as 2
from entities
left join features
as 1
on 1
。 entity_id
= entities
。 id
和1
。 feature_class_id
1 left left features
as 2
on 2
。 entity_id
= entities
。 id
和2
。 feature_class_id
2其中experiment_id
= 1)`
你说的“应用程序\班”是什么意思? –
它与之相关的模型...其更详细的文档 –
1.“Feature”与FeatureClass没有多对多的关系。 2.“特征”没有'experiment_id'列。 3.“FeatureClass”与“Entity”没有直接关系。 4.即使你的关系是正确的,我相信你的答案只会返回来自'实体'表的数据,没有来自'feature_classes'表的特征表数据和特征描述 –