定義済みのストーリーのリストと、別のテーブルに、それらのストーリーに関連付けられた一連のタスクがあります。
特定のユーザーについて、ストーリー番号の個別のリストを取得したいです。たとえば、ユーザーが複数のタスクを持っている場合、ストーリーは一度だけリストされます。
私は直接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 のデータを表示すると、2 行だけが返されます (ユーザー 1 にはストーリー 1000 で 2 つのタスクがあります) ストーリー 1000 ストーリー 1001
ユーザー 3 の場合、ストーリー 1001 に対して 1 行しか取得できません。
さらに追加するには、2つのクエリを結合して個別のリストを返すことができるようにしたいので、メンバー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
メンバー 1 が担当するストーリーと、メンバーが関与するストーリーのリストを取得します。ユニオンはユニークな種類の処理を行うため、各ストーリーは 1 回だけ返されます (彼らが所有するストーリーに関与している可能性が非常に高いため)。
ページに 1 つの配列が返されるように、2 つのクエリを結合する方法はありますか?
ティア