发新话题
打印

[FleaPHP][TDG]建立HAS_MANY关联后如何对关联表数据进行排序?

[FleaPHP][TDG]建立HAS_MANY关联后如何对关联表数据进行排序?

建立HAS_MANY关联后如何对关联表数据进行排序?

建立HAS_MANY关联后如果对关联表数据进行排序?
我在API中查到FLEA_Db_HasManyLink类里有一个成员变量$sort是用于对关联表进行排序的,
但是我的类是从FLEA_Db_TableDategeteway类继承的,在FLEA_db_TableDateGeteway类里并没有这个成员变量,而这个类里又有一个$links成员变量API上说是存储关联信息的一个数组,在这个数组里关联信息是怎么存储的API上并没有相关说明。
我尝试在我的类里创建一个FLEA_Db_HasManyLink对像,并修改$sort的值再利用FLEA_Db_TableDateGeteway类的createLink方法创建关联,但是不成功,好像不是这样用的。
请高手指教一下我应该如果才能对关联表的数据进行排序呢?
还有个问题,在我的类里不能使用我自定义的成员变量,
我在类里先用 var $word 创建一个成员变量,再在方法里用$this引用成员变量,但是提示我是一个不确定的变量,面且有些从父类继承过来的成员变量也没能用,不知道是不是私有变量。
最后建议管方是不是能将API写的再祥细一点,现在的API作为像我这样的新手看起来感觉有些地方很难理解。


这样使用:
复制内容到剪贴板
代码:
class MyTable extends FLEA_Db_TableDataGateway
{
    var $tableName = 'xxxx';
    var $primaryKey = 'xxxx';

    var $hasMany = array(
        array(
            'tableClass' => 'otherTable',
            'foreignKey' => 'xxx_id',
            'mappingName' => 'xxx',
            
            'sort' => 'sort_field DESC',
        ),
    );
}

TOP

定义每一个关联时就可以指定 sort 选项,这样在查询这个关联时,就可以排序了。

另一种做法:
复制内容到剪贴板
代码:
/**
* 1.0.70 版及以后,使用 getLink()
*
* getLinkByName() 的参数是关联的名字。这个名字由关联的 mappingName 属性决定
*/
$link =& $table->getLinkByName('xxx');

/**
* 指定关联数据的排序方式,然后查询
*/
$link->sort = 'sort_field ASC';
$rowset = $table->find($id);

/**
* 改变关联数据的排序方式,再查询一次
*/
$link->sort = 'sort_field DESC';
$rowset = $table->find($id);

TOP

发新话题