php - 使用 PHP 从 MySQL 中获取所有记录作为惰性 ="false"

标签 php mysql pdo smarty smarty3

我的数据库 users 和 users_roles 中有 2 个表,如下所示:

用户:

id | username | user_role_id
----------------------------
 1 | User1    | 1
 2 | User2    | 1
 3 | User3    | 2

用户角色:

id | role 
----------
 1 | admin
 2 | user

所以,在 Java 中,我只需要在 Hibernate 映射中编写一个属性 lazy="false"来获取所有 users 的列表,自动包含 users_roles 对象,每个专门针对 users 表中的每条记录,但在 PHP 中?我刚刚在 PDO 中遇到一个名为 FETCH_ASSOC 的选项,但我不明白它是如何工作的。

我获取所有用户列表的方法如下所示:

public function getAll() {

    $conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);

    $sql = $conn->prepare("SELECT * FROM users ORDER BY id DESC");

    $sql->execute();
    $list = $sql->fetchAll(PDO::FETCH_OBJ);

    $conn = null;

    return $list;
}

以及 Smarty 模板中的一段代码:

{foreach from=$usersList item=item}                
    {$item->username}
    {$item->users_roles.role}
{/foreach}

你介意帮我一点点让我走上正确的道路吗?

最佳答案

FETCH_ASSOC 选项将行提取到关联数组中,例如:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => name1
        )

    [1] => Array
        (
            [id] => 2
            [name] => name2
        )
)

如果想top获取users_roles表中有相应记录的所有用户,可以使用这个请求:

SELECT 
    *
FROM
    users
INNER JOIN
    users_roles
ON
    users_roles.id=users.user_role_id
ORDER BY
    users.id DESC

关于php - 使用 PHP 从 MySQL 中获取所有记录作为惰性 ="false",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18011697/

相关文章:

javascript - html JavaScript 在新页面加载时不显示图像

php - PHP header 和 Javascript window.location 有什么区别?

Mysql:获取多个外键命中条件的数据

php - MySQL - 将许多小查询转换为大查询

php - 执行 PDO 语句的更好方法

php - 如何在 PHP/MySQL 中获取和比较行值?

php - Codeigniter activerecord 或 select 语句

mysql - 在 Node JS Handlebars JS MySql 中发送值

php - mysql 准备了 fetch 循环,不会使用循环 stmt 连接

php - 如何构建自定义 PHP Mysql 或 PDO 函数