Hi,

2011/5/4 passkey1...@gmail.com <passkey1...@gmail.com>:
> Hi there,
> I'd like to ask you guys a question when you have to deal with a VERY
> complex query.
> Use case:
> An e-commerce website with integrated social network. User could have many
> friends on that website. For each user, I have to list all products which:
> - are marked as featured (sponsored products, for instance).
> - have already been purchased by at least one of his friends.
> - he did not purchase yet.
> ....
> - are available in his country
> ....
> and so on.
>
> For these kinds of complex query, I would not imagine that a SQL query is an
> appropriate solution. My thought was to make a simple query, then do some
> processing in php to filter out all records that do not satisfy the
> condition.
>
> How did you guys think of that solution? Have you ever dealt with such kind
> of query?

I usually do, so that I use intersections

$this->companys = Doctrine_Core::getTable('Company')->getCompanysHydrate();
$this->companys_array = array();
    foreach ($this->companys as $this->company) {
      $this->companys_array[] = $this->company['id'];
    }

    $this->companys_search =
Doctrine_Core::getTable('Company')->getCompanysByNameLikeHydrate($this->search);
    $this->companys_search_array = array();

    foreach ($this->companys_search as $this->company_search) {
      $this->companys_search_array[] = $this->company_search['id'];
    }


(Other criteria)



Now we take a common part

    $this->company_result_ids = $this->companys_array;
    if ($this->search) {
      $this->company_result_ids =
array_intersect($this->company_result_ids,
$this->companys_search_array);
    }



and now the result of the common part

    $this->companys =
Doctrine_Core::getTable('Company')->getCompanysByIds($this->company_result_ids);


>
> Thanks,
> Tuan
>
> --
> If you want to report a vulnerability issue on symfony, please send it to
> security at symfony-project.com
>
> You received this message because you are subscribed to the Google
> Groups "symfony users" group.
> To post to this group, send email to symfony-users@googlegroups.com
> To unsubscribe from this group, send email to
> symfony-users+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/symfony-users?hl=en
>



-- 
Best regards,
Michal

http://eventhorizon.pl/

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

Reply via email to