0

Medoo PHP データベース フレームワークを使用して結合を試みる

$users = $db->select(
    'users',
    [
        '[>] tournaments_users' =>
        [
            'tournaments_users.user_id' => 'users.uid'
        ]
    ], [
        'users.uid',
        'users.name',
        'users.modifier',
        'users.handicap',
        'tournaments_users.tournament_id'
    ], [
        'tournaments_users.tournament_id' => 1
        'ORDER' => 'users.username ASC'
    ]
);
foreach( $users as $u) {
    echo $u['name'].'<br>';
}

選択すると、foreach() に無効な引数が指定されます。

列セクションと場所セクションから「tournaments_users.tournament_id」を削除すると、クエリは機能しますが、正しいデータは表示されません。

クエリが無効なのはなぜですか?

4

2 に答える 2

0

join 句で AND/OR を使用した論理式の連結は、現在 medoo ライブラリ (medoo 0.9.6.2) ではサポートされていません。SQL クエリを直接実行するには、medoo によって提供される query($query) メソッドのみを使用できます。あなたの例では、クエリは次のようになります。

$data = $db->query("SELECT u.user_id, s.shirt_id FROM `cvs_users` u 
LEFT JOIN `shirts` s 
ON user_id = shirt_owner_id AND shirt_being_worn = 1 
WHERE user_id = 1")->fetchAll();

クエリされたデータを取得するために、最後に fetchAll() を呼び出していることに注意してください。私は同じ問題に遭遇し、medoo.php コードをデバッグすると、AND/OR 条件は where 句内でのみ考慮されることが明らかになりました。将来のアップデートでこの機能を追加するかもしれません。

于 2015-09-22T10:11:46.510 に答える