0

選択した各サービスを(htmlフォームから)チェックし、その情報をLaravel 4モデルを介してデータベースに保存する単純なforeachループがあります。情報は正常に保存されますが、null の場合でも foreach 入力が保存されます。データが選択されている場合、データを保存するにはどうすればよいですか?

コントローラ

  public function getServices() {
            $user = User::find(Auth::user()->id);   

            $input = [
                    'rooms' => Input::get('rooms'),
                    'pr_deodorizer' => Input::get('pr_deodorizer'),
                    'pr_protectant' => Input::get('pr_protectant'),
                    'pr_sanitizer' => Input::get('pr_sanitizer'),
                    'fr_couch' => Input::get('fr_couch'),
                    'fr_chair' => Input::get('fr_chair'),
                    'pr_sectional' => Input::get('pr_sectional'),
                    'pr_ottoman' => Input::get('pr_ottoman'),
                    'pr_tile' => Input::get('pr_tile'),
                    'pr_hardwood' => Input::get('pr_hardwood')
            ];

            $empty = '<i class="icon-warning-sign"></i> No services were selected. Need help? Contact us';                          

            if(empty($input['rooms']) && empty($input['pr_deodorizer']) && 
                    empty($input['pr_sanitizer']) && empty($input['pr_protectant']) 
                    && empty($input['fr_couch']) && empty($input['fr_chair'])
                    && empty($input['pr_sectional']) && empty($input['pr_ottoman'])
                    && empty($input['pr_tile']) && empty($input['pr_hardwood'])
                     ){
                return Redirect::to('book/services')->withErrors($empty)->withInput();
            } 

            foreach($input as $services)
            {
                $service = new Service();

                $service->userID = $user->id;
                $service->services = $services;

                $service->save();
            }
            return Redirect::to('book/schedule');
    }

これが私のデータベースに保存する方法です:

id  userID  services    price   created_at  updated_at
171 1          3    NULL    2013-09-17 03:13:24 2013-09-17 03:13:24
172 1               NULL    2013-09-17 03:13:24 2013-09-17 03:13:24
173 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25
174 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25
175 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25
176 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25
177 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25
178 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25
179 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25
180 1               NULL    2013-09-17 03:13:25 2013-09-17 03:13:25

サービス列は私が見ているものです。ユーザーは、serviceID が 3 のサービスを選択しましたが、それ以外は何もありませんでした。しかし、空の行を占めているため、レポートでエラーが発生します。実際に入力したデータを保存するにはどうすればよいですか? Laravel 4の検証で可能ですか?

4

1 に答える 1

0

私は elclanrs に同意します - コードが正しくないようです。

しかし、あなたの質問に答えるために - あなたはこれをすることができませんでしたか?

            foreach($input as $services)
            {
                $service = new Service();

                $service->userID = $user->id;
                $service->services = $services;

                if ( ! (is_null($services->services)))
                {
                    $service->save();
                }
            }
于 2013-09-17T03:26:46.450 に答える