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() 提供的参数无效。

从 column- 和 where- 部分中删除 'tournaments_users.tournament_id' 会使查询工作,但不会显示正确的数据。

为什么查询无效?

4

2 回答 2

0

将加入选择更改为

        '[>]tournaments_users' => 
        [
            'uid' => 'user_id'
        ]

解决了无效论点的问题。

于 2014-07-18T07:08:44.137 回答
0

medoo 库 (medoo 0.9.6.2) 目前不支持在 join 子句中使用 AND/OR 连接逻辑表达式。只能使用medoo给出的query($query)方法直接执行sql查询。对于您的示例,查询如下所示:

$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 回答