1
私のMySQLデータベースには多くのクエリがあります。 Thteのクエリはうまく動作します。クエリからSET @ VARIABLEがある場合、SQLDataProviderを使用できません
SET @cleaning = 'cleaning';
SET @one_bar = 'one bar';
SET @test_periodic = 'test_periodic';
SET @repairs = 'repair';
SELECT ir.id, ir.no_surat, @cleaning as tagihan,tc.`level`, tc.cleaning as nominal FROM ydepotras_estimator.repair_estimate re
LEFT JOIN ydepotras_estimator.inspection_report ir
ON re.inspection_id = ir.id
INNER JOIN ydepotras_finance.tagihan_cleaning tc
ON re.id = tc.repair_estimate_id
UNION ALL
SELECT ir.id, ir.no_surat, @one_bar as tagihan, tob.`level`, tob.one_bar as nominal
FROM ydepotras_estimator.repair_estimate re
LEFT JOIN ydepotras_estimator.inspection_report ir
ON re.inspection_id = ir.id
INNER JOIN ydepotras_finance.tagihan_one_bar tob
ON re.id = tob.repair_estimate_id
UNION ALL
SELECT ir.id, ir.no_surat, @test_periodic as tagihan,
ttp.`level`, IFNULL(ttp.years2,ttp.years5) as nominal
FROM ydepotras_estimator.repair_estimate re
LEFT JOIN ydepotras_estimator.inspection_report ir
ON re.inspection_id = ir.id
INNER JOIN ydepotras_finance.tagihan_test_periodic ttp
ON re.id = ttp.repair_estimate_id
GROUP by ttp.id
UNION ALL
SELECT ir.id, ir.no_surat, @repairs as tagihan,
tr.`level`, tr.`repair` as nominal
FROM ydepotras_estimator.repair_estimate re
LEFT JOIN ydepotras_estimator.inspection_report ir
ON re.inspection_id = ir.id
INNER JOIN ydepotras_finance.tagihan_repair tr
ON re.id = tr.repair_estimate_id
ORDER BY no_surat
ここでYii2がオンになります。 このクエリは$ dataProviderになり、ActiveRecordを使用すると非常に複雑になります。
私はこのようなSQLDataProviderを使用することを好む:
$query = 'The query from above'
$dataProvider = new SqlDataProvider([
'sql' => $query,
'totalCount' => 100,
]);
return $dataProvider->getModels();
しかし、それは私を与える:
Database Exception – yii\db\Exception
SQLSTATE[HY000]: General error
ありがとうございます。どうぞ、検索の扱い方は? –
このリンクでは、activeDataProviderによるフィルタ(検索)と注文の提案を見つけることができます。 – scaisEdge
どのようなリンクですか? 。 Btw、ありがとう –