これは簡単なことですが、1.5から1.6/1.7/2.5の切り替えでは、良いソースを見つけることができませんでした。Joomlaでクエリを構築するさまざまな方法は?
コンポーネントをビルドしたり、その他の問題の中でも、構文の問題が続いています。
例えば、ここで私は、クエリを構築しています一つの方法です: [TYPE 1]
$query->SELECT('u.id as UserID
, u.name AS Name
, uppi.profile_value AS Hair
, uppi2.profile_value AS Height
');
$query->FROM (' #__users AS u');
$query->LEFTJOIN (' #__user_profiles AS uppi ON u.id = uppi.user_id AND uppi.ordering = 1 ');
$query->LEFTJOIN (' #__user_profiles AS uppi2 ON u.id = uppi2.user_id AND uppi2.ordering = 2 ');
$query->GROUPBY (' u.id
, u.name
, uppi.profile_value
');
別の方法: [TYPE 2]
$query->SELECT('u.id as UserID
, u.name AS Name
, uppi.profile_value AS Hair
, uppi2.profile_value AS Height
')
->FROM (' #__users AS u')
->LEFTJOIN (' #__user_profiles AS uppi ON u.id = uppi.user_id AND uppi.ordering = 1 ')
->LEFTJOIN (' #__user_profiles AS uppi2 ON u.id = uppi2.user_id AND uppi2.ordering = 2 ')
->GROUPBY (' u.id
, u.name
, uppi.profile_value
');
一部を混乱しますどちらも、 "LEFTJOIN"のようなmysql呼び出しは2つではなく1つの単語です。だから私が使用したい場合はINSERT…ON DUPLICATE KEY UPDATE
私は完全に失われています。 [TYPE 3]
$query->SELECT('u.id as UserID
, u.name AS Name
, uppi.profile_value AS Hair
, uppi2.profile_value AS Height
');
$query->FROM (' #__users AS u');
$query->JOIN ('LEFT', ' #__user_profiles AS uppi ON u.id = uppi.user_id AND uppi.ordering = 1 ');
$query->JOIN ('LEFT', ' #__user_profiles AS uppi2 ON u.id = uppi2.user_id AND uppi2.ordering = 2 ');
$query->GROUPBY (' u.id
, u.name
, uppi.profile_value
');
$query->ORDER ('u.name ASC');
これは私がクエリが構築された見てきた別の方法ですが、仕事を得ることができない[EDITED - 今働いて、感謝@cppl:ここ
は、第三のです!] [タイプ4]
$query= "SELECT `u`.`id` as UserID
, `u`.`name` AS Name
, `uppi`.`profile_value` AS Hair
, `uppi2`.`profile_value` AS Height
FROM `#__users` AS u
LEFT JOIN `#__user_profiles` AS uppi ON `u`.`id` = `uppi`.`user_id` AND `uppi`.`ordering` = 1
LEFT JOIN `#__user_profiles` AS uppi2 ON `u`.`id` = `uppi2`.`user_id` AND `uppi2`.`ordering` = 2
";
私は、n ... JoomlaのMVCのチュートリアルとリンダを通じて行ってきましたどちらか一方が本当にこれを "ここではいくつかのコードPLOP"を超えて扱っています。
References:
--//www.theartofjoomla.com/home/9-developer/135-database-upgrades-in-joomla-16.html
--//stackoverflow.com/questions/8467858/joomla-1-7-db-query-does-not-work-when-query-has-an-ampersand
--developer.joomla.org/standards/ch03s10.html
--forum.joomla.org/viewtopic.php?p=2506722
--forum.joomla.org/viewtopic.php?p=1200668
--docs.joomla.org/API16:JDatabaseQuery
--//fsadventures.com/2011/01/some-basic-joomla-database-call-functions/
--//www.sourcecodester.com/php/3863/updating-multiple-rows-mysql-using-php.html
--//stackoverflow.com/questions/7047471/mysql-query-syntax-error
質問:
1)は、これらの間に違いはありますか?
2)ある方法を別の方法で使用する理由はありますか?
3)これらを構築するさまざまな方法を学習するための優れた情報源はありますか?私は何時間も捜してきましたが、包括的なものは何も見つかりませんでした。
ありがとうございます!
一般的に私は '二重キー更新 'を使用しないでください。私は、クエリを試して、例外/エラーを生成して、そのエラーを2番目のクエリで処理する方が好きです。私は非常に少数の異なるORMとDBAL層を使用していますが、そのAPIの機能をサポートしていない人は、通常、それを達成するためにどのような未処理のSQL機能にも戻さなければなりません。 – prodigitalson
ああ、良い点!私が今働いていることは他の場所で決して使われることはありませんが、それは間違いなく私が勉強しているうちに私が守ることです。ありがとう! – Gisto