繁体   English   中英

在ATK4中,如何修改模型以获取DISTINCT列表

[英]in ATK4, How do i amend a model to get a DISTINCT list

我定义了一个故事列表,在另一个表中,列出了与这些故事相关的一组任务。

对于给定的用户,我想获得一个不同的故事编号列表,例如,如果用户有多个任务,则该故事将只列出一次。

我可以使用直接SQL来做到这一点,但如何在ATK4中使用模型来实现呢?

目前,将成员链接到故事的表具有这样定义的模型

<?php
 class Model_StoryMember extends Model_Table {
public $entity_code='vscrum_story_member';
public $table_alias='sm';

function init(){
           parent::init();
           $this->addField('story_id')->system(true)->visible(false)->   
             defaultValue($this->api->recall('story_id'));
           $this->addField('team_id')->system(true)->visible(false)->
             defaultValue($this->api->recall('team_id'));
           $this->addField('sprint_id')->system(true)->visible(false)->
             defaultValue($this->api->recall('sprint_id'));
           $this->addField('member_id')->refModel('Model_Member');
           $this->addField('points')->datatype('numeric');
           $this->addField('notes')->datatype('text');
 }
 }

该模型可以包含每个用户的记录,例如

    STORY
    ID     Name     Points Responsible
    1000   Story 1      2     1
    1001   Story 2      3     1

    STORY_MEMBER
    ID     Story    Member  Points Description
    1      1000     1       .5     Task 1
    2      1000     1       .5     Task 2 
    2      1000     2       1      Task 1
    3      1001     1       1      Task 1
    4      1001     2       1      Task 2 
    5      1001     3       1      Task 3

因此,如果我查看用户1或用户2的数据,我只希望返回两行(即使用户一个在故事1000中有两个任务),故事1000故事1001

而对于用户3,我只会获得故事1001的一行。

要进一步添加,我希望能够合并两个查询并返回不同的列表,因此如果我向成员1查询它,如果我有基本的sql,例如

SELECT id, name
  from story
 where responsible=1
 union
select s.id, s.name 
  from story s, story_member sm
 where s.id=sm.story_id
   and sm.member_id=1

我将获得成员负责的故事列表以及涉及的故事。 工会负责唯一的排序,因此每个故事只返回一次(因为很可能他们参与了他们所拥有的故事),但也可能有他们参与的故事,但其他人负责。

有没有一种方法可以将两个查询合并在一起,以便在页面中返回一个数组?

TIA

您最好手动使用查询。 尝试:

$dsql->option('distinct');

您可以更改视图的查询,例如,如果您有网格,则:

$this->grid->dq->option('distinct');

设置完模型后调用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM