1
は、だから私は4つのテーブルを持っている複数の列と複数の行をマージ:Laravelは
- 実験(テーブル) - ID
- feature_classes(列) - ID、EXPERIMENT_ID、タイトル
- エンティティ(行) - ID ID、ENTITY_ID、feature_class_id、値
Iは、これらの4つのテーブルからテーブルを構築する必要がある - 、
私はこれを試してみました:entities
を選択:
$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
機能で報われはライン1(SQLで=
エンティティ.
ID FE」をENTITY_ID。 id
,,entities
,result
,1
,value
,1
,2
。 value
を2
からentities
に残してください。features
を1
に1
として残してください。 entity_id
= entities
。 id
および1
。 feature_class_id
1が残ってfeatures
として2
が2
になります。 entity_id
= entities
。 id
および2
。 = 1) `
あなたは「アプリケーション\クラス」とはどういう意味ですか? –
関連するモデル –
1. 'Feature'は' FeatureClass'と多少の関係がありません。 2. 'Feature'に' experiment_id'カラムがありません。 3. 'FeatureClass'は' Entity'に直接関係しません。 4.あなたが関係を正しく取得したとしても、あなたの答えが 'フィーチャー'テーブルのデータとフィーチャーの説明がなく、 'entity'テーブルのデータだけを返してくれると確信しています。 –