1

次のように、データベース 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内の各レコードについてですが、PHP では? usersと呼ばれる PDO のオプションに出くわしましたがFETCH_ASSOC、それがどのように機能するのか理解できません。

私の get all users list メソッドは次のようになります。

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}

正しい道を歩むために少し手伝ってくれませんか?

4

3 に答える 3

1

CakePHPYiiなどの PHP フレームワークを使用している場合を除き、関連データを取得するには独自のクエリを作成する必要があります。

SELECT * FROM users
LEFT JOIN users_roles ON users.user_role_id = users_roles.id

その後、レコードを取得してコードで使用できます。

于 2013-08-02T08:07:04.630 に答える