簡體   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