2 つのモデルをリンクすると、次のような結果が返されます。
Array
(
[Submission] => Array
(
[id] => 47
[user_id] => 0
[title] => asdfasdfsa dfasdf asdfa sfa fadf
[source] => http://www.aol.com
[slug] =>
[category] => health
[created] => 2012-06-25 11:30:16
)
[User] => Array
(
[id] => 2
[username] => john
)
[SubmissionsVote] => Array
(
[0] => Array
(
[id] => 247
[user_id] => 2
[submission_id] => 47
[vote_type] => up
)
)
)
ただし、投票数が [0] ~ [n] の場合もあります。これは私のもの$newestSubmissions
です。私が私に与えるためにやっているクエリは次のとおりです。
public function newestSubmissions() {
$this->unBindModel(
array('hasMany' => array('Comment')));
return $this->find('all', array(
'fields' => array(
'Submission.id',
'Submission.user_id',
'Submission.title',
'Submission.source',
'Submission.slug',
'Submission.category',
'Submission.created',
'User.id',
'User.username'
),
'order' => 'Submission.created DESC'
));
}
私がやりたいのは、$newestSubmissions
配列オブジェクト全体のすべての投票と、それぞれのすべての投票 (以下のクエリ)を取得して、実際のスコアを計算し、代わりにビューに$newestSubmissions
呼び出された単一の配列オブジェクトを送信できるようにすることです。$newestSubmissions
と$newestSubmissions
の$submissionScore
public function getVoteType($userId, $submissionId) {
$voteType = $this->find('all', array(
'conditions' => array(
'User.id' => $userId,
'Submission.id' => $submissionId),
'fields' => array(
'SubmissionsVote.vote_type'),
'limit' => '1'
));
return $voteType[0]['SubmissionsVote']['vote_type'];
}
基本的に、親配列オブジェクト内の内部インデックス付き配列オブジェクトを送信するのではなく、配列オブジェクト内の他のすべての情報と共に単一のスコアをビューに送信したいと考えています (これは現在取得しているものです)。
これどうやってするの?