求助 findSql() 函数怎么实现数据库关联查询

#1 xiaobai

模型经过测试使用findAll()函数是正常关联的。但是想改成findSql()直接使用SQL语句来实现一些脑残想法。
控制器代码如下:
$sql = "SELECT us_db1.* FROM `us_db1`";
                $this->userlist = spClass('m_user')->spPager($this->spArgs('page',1),5)->findSql($sql);
                $this->pager = spClass('m_user')->spPager()->getPager();
                dump($this->userlist);
                $this->display('tpl/user_list.html');
模型代码如下:
class m_user extends spModel{
        public $table = 'db1';
        public $pk = 'us_id';
        var $linker = array(
                array(
                        'type'=>'hasone', //关联类型|一对一关联
                        'map'=>'db2', //关联的标识
                        'mapkey'=>'us_id', //本表的关联字段名
                        'fclass'=>'db2', //对应表的类名
                        'fkey'=>'us_id', //对应表的关联字段名
                        'enabled'=>TRUE, //启用关联
                ),
                 array(
                    'type' => 'hasmany',   // 一对多关联
                    'map' => 'db2',    // 关联的标识
                    'mapkey' => 'us_id',
                    'fclass' => 'db2',
                    'fkey' => 'us_id',
                    'enabled' => true,
                ),
        );
}




2012-02-15 21:40:48

#2 jake

findSql的作用是用SQL查询,关联是通过join的SQL来实现的。

2012-02-15 22:08:21

#3 xiaobai

谢谢JACK 已经实现。

2012-02-15 22:45:31