Joomlaサイトのテーブルから「完了」行を定期的に別のテーブルに移動するPHPスクリプトを作成しようとしています。私はPHPMyAdminのにちょうど良い作品を書いクエリ:Joomlaのテーブル間で行を移動
INSERT INTO my_calsgovdocs.sent_copy
SELECT * FROM my_calsgovdocs.entered_copy
WHERE `Status` LIKE '%Sent%';
DELETE FROM my_calsgovdocs.entered_copy
WHERE `Status` LIKE '%Sent%';
私はJoomlaの内部で実行することができ、いくつかのPHPコードに翻訳しようとしましたが、私は以下のそのコードを貼り付けました。それは->insert into
を開始する下の行を指す "予期しないT_STRING"エラーを返します。そして、 "insert into"が有効なメソッド名ではないため、スクリプトが機能しないことが私に発生しました。これまで私はJoomla内で使用される同等のメソッドを見つけることができません。これは私のコードでの試みでした:
try
{
$db->transactionStart();
$query = $db->getQuery(true);
$query
->insert into($db->quoteName('sent_copy'))
->select('*')
->from($db->quoteName('entered_copy'))
->where($db->quoteName('Status') . ' LIKE ' . $db->quote('%Sent%') . ';')
->delete from($db->quoteName('entered_copy'))
->where($db->quoteName('Status') . ' LIKE ' . $db->quote('%Sent%'));
$db->setQuery($query);
$result = $db->execute();
$db->transactionCommit();
}
catch (Exception $e)
{
$db->transactionRollback();
JErrorPage::render($e);
}
私はこれをJoomla内でどのように達成できるのか考えていますか? 1つのトランザクションでそれを行うには(上記のように気づいたかもしれませんが)好きです。エラーがあれば、私は自分の手で混乱することはありません。
ここにスペースを入れることはできません。とにかく 'insert'を使用しているだけではないのか分かりません。しかし、あなたが本当に望むのであれば、クエリコンストラクタを使うのではなく、クエリ文字列の一部として 'insert into'を入力することができます。あなたがその方法で 'insert'と' delete'を混ぜ合わせることができないので、すべてがとにかく動作しません。 – Elin
「完了」状態を示すために、ある種のステータス/ワークフロー状態フィールドをテーブル内で使用できない理由はありますか?後続のクエリ/ビューなどは、複数のテーブルをクエリする必要がなく、これに基づいてフィルタリングできます。 – developerjack
@Ele Yep;私はそこにスペースを使うことはできません。それは私が "'insert into'が有効なメソッド名ではないことを意味しています!"クエリ文字列は、しかし、行く方法かもしれません。提案に感謝します。私は、あなたが 'insert'と' delete'を混在させないということについて何を意味しているのか分かりません。私が上に貼り付けたSQLクエリは適切に働いていましたが、PHP/Joomlaの中からそれを起動する必要がありました。あなたはそれについて詳述できますか? – ruinlach