示例#1
0
 public function accept()
 {
     $members = Member::findByIds([$this->from, $this->to])->indexBy('_id')->all();
     Member::makeFriends($members[$this->from], $members[$this->to], true);
     $this->addErrors($members[$this->from]->getErrors());
     $this->addErrors($members[$this->to]->getErrors());
     if (!$this->hasErrors()) {
         $this->delete();
     }
     return $this;
 }
示例#2
0
 public function actionMembergen($n)
 {
     set_time_limit(360);
     $total = $count = Member::find()->count();
     $groupNum = 0;
     while ($n > $groupNum) {
         $groupNum++;
         $members = array_fill($total + 1, rand(100, 200), []);
         foreach ($members as $id => &$member) {
             $member = new Member();
             $member->_id = $id;
             $member->name = 'member_' . $groupNum . '_' . $id;
         }
         unset($member);
         foreach ($members as $id => $member) {
             $friendIds = array_rand($members, rand(3, 5));
             foreach ($friendIds as $friendId) {
                 $member->addFriend($members[$friendId]);
             }
         }
         if ($total) {
             foreach ($members as $member) {
                 $distantFriendIds = array_map(function () use($total) {
                     return rand(1, $total);
                 }, array_fill(0, rand(3, 5), null));
                 $distantFriends = Member::findByIds($distantFriendIds)->all();
                 foreach ($distantFriends as $friend) {
                     $friend->addFriend($member)->save();
                 }
             }
         }
         foreach ($members as $member) {
             $member->save();
         }
         $total += count($members);
         echo $groupNum . "\t| " . count($members) . " <br>\n";
     }
     echo "\n<br>Created " . ($total - $count);
     echo "\n<br>Total " . $total;
 }