У меня есть список заданных историй и, в другой таблице, набор задач, прикрепленных к этим историям.
Для данного пользователя я хочу получить отдельный список номеров историй, например, если пользовательимеет несколько задач, история будет перечислена только один раз.
Я могу сделать это с прямым 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
, я получу списокистории, за которые ответственен один член, а такжеose, для которого они вовлечены.Профсоюз позаботится об уникальности такого рода, поэтому каждая история возвращается только один раз (так как вполне вероятно, что они вовлечены в истории, которыми они владеют), но могут также быть истории, в которых они участвуют, но за них отвечает кто-то другой.
Есть ли способ объединить два запроса вместе, чтобы я получил один массив, возвращаемый на странице?
TIA