ThinkPHP

表结构:

映射关系:

UserRelationModel会取UserRelation为表名称。所以要自定义表名称:

//定义主表名称
protected $tableName = 'User';

<?php
Class UserRelationModel extends RelationModel {
    //定义主表名称
    protected $tableName = 'User';

    //定义关联模型
    protected $_link = array(
        'Role' => array(
            'mapping_type' => MANY_TO_MANY,      //多对多关系
            'foreign_key'  => 'user_id',        //role对应的外键关系
            'relation_foreign_key' => 'role_id',   //user表对应的外键关系
            'relation_table' => 'ms_role_user',    //要关联的表
'mapping_fields' => 'id, name, remark' //关联哪些字段 ) ); }

查询的结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [username] => admin
            [logintime] => 1455336937
            [loginip] => 127.0.0.1
            [lock] => 0
            [Role] => Array
                (
                )

        )

    [1] => Array
        (
            [id] => 2
            [username] => thinkbaitang
            [logintime] => 1455339999
            [loginip] => 127.0.0.1
            [lock] => 0
            [Role] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [name] => Manager
                            [remark] => 普通管理员
                        )

                    [1] => Array
                        (
                            [id] => 2
                            [name] => Admin
                            [remark] => 高级管理员
                        )

                )

        )

    [2] => Array
        (
            [id] => 3
            [username] => zhangsna
            [logintime] => 1455340000
            [loginip] => 127.0.0.1
            [lock] => 0
            [Role] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [name] => Manager
                            [remark] => 普通管理员
                        )

                    [1] => Array
                        (
                            [id] => 2
                            [name] => Admin
                            [remark] => 高级管理员
                        )

                    [2] => Array
                        (
                            [id] => 3
                            [name] => SuperAdmin
                            [remark] => 超级管理员
                        )

                )

        )

)
原文地址:https://www.cnblogs.com/KTblog/p/5188044.html