Example #1
0
 /**
  * articlesとphotosへ格納
  * @param array $data
  */
 public function create(array $data)
 {
     DB::transaction(function () use($data) {
         $this->article->newInstance();
         $this->article->{'res_id'} = $data['parent_id'];
         $this->article->{'name'} = $data['name'];
         $this->article->{'age'} = $data['age'];
         $this->article->{'sex'} = $data['sex'];
         $this->article->{'prefectures'} = $data['prefectures'];
         $this->article->{'title'} = $data['title'];
         $this->article->{'body'} = $data['body'];
         $this->article->{'mail'} = $data['mail'];
         $this->article->{'password'} = $data['password'];
         $this->article->{'ip_address'} = $data['client_ip'];
         $this->article->{'checked'} = 0;
         $this->article->save();
         // 返信の場合、親のupdate_atを更新とお知らせメール送信
         if ($this->article->{'res_id'} !== '0') {
             $article = $this->article->newInstance();
             $parentArticle = $article->find($this->article->{'res_id'});
             $parentArticle->updated_at = Carbon::now();
             $parentArticle->save();
             if ($parentArticle->mail) {
                 Log::info('replay mail set queue. id: ' . $this->article->{'id'});
                 $this->dispatch(new ReplySendEmail($parentArticle, $this->article));
             }
         }
         $photos = [];
         for ($i = 1; $i <= 2; $i++) {
             if (isset($data['file' . $i])) {
                 $file1Result = $this->getExifReadData($data['file' . $i]);
                 if ($file1Result) {
                     $photos[] = new Photo($file1Result);
                 }
             }
         }
         if ($photos) {
             $this->article->photos()->saveMany($photos);
         }
         $interests = $this->interest->all();
         foreach ($interests as $row) {
             if (isset($data[$row->name_tag])) {
                 $this->article->interests()->attach($data[$row->name_tag]);
             }
         }
         // 新規記事・返信でインクリメント
         $this->analysisService->newPostIncrement();
         // tweet
         $this->dispatch(new TwetterTweet($this->article));
     });
 }