Thanks in advance for any help provided. Apologies for no code blocks.
I want to write my find such that it can construct a query like:
SELECT `ReviewerActivityStatus`.`id`,
`ReviewerActivityStatus`.`reviewer_id`,
`ReviewerActivityStatus`.`date`, `ReviewerActivityStatus`.`status`,
`ReviewerActivityStatus`.`comment`, `Reviewer`.`id`,
`Reviewer`.`briefing_id` FROM `reviewer_activity_statuses` AS
`ReviewerActivityStatus` LEFT JOIN `reviewers` AS `Reviewer` ON
(`ReviewerActivityStatus`.`reviewer_id` = `Reviewer`.`id`) WHERE
`reviewer_id` in (6,8) AND `status` = 1
Notice no single quotes in the parenthesis of the in clause...
But when I do:
$result = $this->ReviewerActivityStatus->find('all',array
('conditions'=>array('reviewer_id IN (?)'=>$keys,'status'=>'1')));
it constructs the following:
SELECT `ReviewerActivityStatus`.`id`,
`ReviewerActivityStatus`.`reviewer_id`,
`ReviewerActivityStatus`.`date`, `ReviewerActivityStatus`.`status`,
`ReviewerActivityStatus`.`comment`, `Reviewer`.`id`,
`Reviewer`.`briefing_id` FROM `reviewer_activity_statuses` AS
`ReviewerActivityStatus` LEFT JOIN `reviewers` AS `Reviewer` ON
(`ReviewerActivityStatus`.`reviewer_id` = `Reviewer`.`id`) WHERE
`reviewer_id` in ('6,8') AND `status` = 1
Notice the single quotes in the parenthesis of the in clause around
the value for $key which is just a string.
My whole code looks like:
function checkApprovalStatus($reviewerid = null) {
echo("<!--");
//we can find out the briefing ID from the reviewer table,
check it
first
$result = $this->Reviewers->find('all',array('conditions'=>array
('id'=>$reviewerid)));
//find the other reviewers with the same briefing id
$briefing_id = $result[0]['Reviewers']['briefing_id'];
$result = $this->Reviewers->find('all',array('conditions'=>array
('briefing_id'=>$briefing_id),'order'=>'id ASC'));
$reviwercount = count($result);
$keys = "";
foreach($result as $reviewers)
{
$keys .= $reviewers['Reviewers']['id'].", ";
}
$keys = substr_replace($keys,"",-2);
//now let's find these reviewers and if they have a
record with a status value of 1
$result = $this->ReviewerActivityStatus->find('all',array
('conditions'=>array('reviewer_id IN (?)'=>$keys,'status'=>'1')));
$approvalcount = count($result);
//if there were as many approvals as reviewers, update the
briefing
status field
echo("reviwer and approval counts: $reviwercount ==
$approvalcount\r
\n");
if($reviwercount == $approvalcount)
{
echo('updating the briefing');
//find the briefing record
$data =
$this->Briefing->find('all',array('conditions'=>array('id'=>
$briefing_id)));
var_dump($data);
//TODO: modify the resulting array and save it.
}
echo("-->");
}
Again thanks for any replies!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---