CakePHP: Брой потребители с публикации или страници, маркирани с даден етикет

Имаме следната връзка за нашите данни:

Потребители

  • Имате и принадлежите на много страници
  • Имате и принадлежите към много публикации

Страници

  • Имат и принадлежат на много потребители
  • Имате и принадлежите към много етикети

Публикации

  • Имат и принадлежат на много потребители
  • Имате и принадлежите към много етикети

Етикети

  • Имате и принадлежите на много страници
  • Имате и принадлежите към много публикации

Тук е нашият въпрос: Има ли начин да получим само преброяване на това колко уникални потребители някога са създали страница или публикация, която е била маркирана с даден етикет?

В нашия модел на етикети:

function getSupportingUserCount($tag_id)
{
    $user_count = $this->find(?);
    return $user_count;
}

person Iniq    schedule 08.02.2012    source източник
comment
Преминете направо към план Б и използвайте $this->query()   -  person Henri    schedule 09.02.2012


Отговори (1)


Можете просто да избягвате обединения, които може да са бавни, ако имате много редове. Така че първо вземете етикета, след това потърсете този идентификатор чрез асоциациите на потребителския модел.

$tag = $this->Tag->find('first', array('conditions'  => array('Tag.name' => 'blahblah'), 'recursive'  => -1);
$tag_id = $tag['Tag']['id'];
$this->User->find('count', array('conditions'  => "OR" => array (
    array('Page.tag_id'  => $tag_id,
          'Post.tag_id'  => $tag_id )
));

(нетестван код, така че може да има правописни грешки)

(настрана: сигурни ли сте, че всяка публикация има много потребители? обикновено публикацията има само 1 автор)

person Costa    schedule 20.02.2012
comment
В нашия случай публикациите имат много автори. Те са създадени съвместно, откъдето се появиха усложненията. - person Iniq; 12.04.2012