我有一個定義的故事列表,在另一個表中有一組附加到這些故事的任務。在ATK4中,我如何修改模型以獲得DISTINCT列表
對於一個給定的用戶,我想得到一個明確的故事編號列表,例如如果用戶有多個任務,故事只會列出一次。
我可以用一個直接的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,則i只想兩行返回(即使用戶之一具有在故事兩個任務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()並實時更改請求。 – romaninsh
有沒有辦法在模型中指定它? - 如果沒有,那麼我可以直接把一個SQL直接放在頁面中,並填充我想要的數據,但想檢查是否有一種方法,我可以添加到鏈條,我addConditions到模型。不用擔心 - 仍然試圖確定框架中的邊界以及它的功能已經超出我的預期。謝謝 –
是的,我不會惹模型。 – romaninsh