首页 > 解决方案 > 我的数据没有保存在数据库中。我无法在控制器部分执行此操作,我该怎么做

问题描述

当您保存时,其他输入数据会进入数据库,而来自 TourDay 的数据不会出现。该关系在迁移和模型部分建立。我无法在控制器部分做到这一点,我该怎么做..

我的刀片:

<div class="row">
<div class="col-lg-12">
    <div class="card card-custom card-stretch ">
        <div class="card-header">
            <h3 class="card-title">GRUP OLUŞTUR</h3>
        </div>
        <form method="post" class="form" id="dynamic_form" enctype="multipart/form-data">
            @csrf
            <div class="card-body">
                @if ($errors->any())
                    <div class="alert alert-danger">
                        <ul>
                            @foreach ($errors->all() as $error)
                                <li><b>{{ $error }}</b></li>
                            @endforeach
                        </ul>
                    </div>
                @endif

                <div class="form-group row">
                    <label class="col-lg-2 col-form-label text-lg-right"><strong>Otel Seçimi:</strong></label>
                    <div class="col-lg-3">
                        <select class="form-control select2 " id="kt_select2_5" name="hotel[]"  multiple=""  tabindex="-1" aria-hidden="true">
                            <optgroup label="Oteller">
                                @foreach($hotels as $hotel)
                                    <option value="{{$hotel->id}}" >{{$hotel->name}}</option>
                                @endforeach
                            </optgroup>
                        </select>
                    </div>
                    <label class="col-lg-2 col-form-label text-lg-right"><strong>Grup Kodu :</strong></label>
                    <div class="col-lg-3">
                        <div class="input-group input-group">
                            <div class="input-group-prepend"><span class="input-group-text" >Grup-Kodu:</span></div>
                            <input type="text" class="form-control form-control-solid" placeholder="TourKey-123-456" name="code" value="{{old('code')}}">
                        </div>
                    </div>
                </div>
                <div class="form-group row">
                    <label class="col-lg-2 col-form-label text-lg-right"><strong>Rehber Ata:</strong></label>
                    <div class="col-lg-3">
                        <select class="form-control form-control-solid" id="exampleSelectd" name="guide_id">
                            @foreach($guides as $guide)
                                <option value="{{ $guide->id }}" @if(old('guide_id')===$guide->id) selected @endif>{{$guide->full_name}}</option>
                            @endforeach
                        </select>
                    </div>
                    <label class="col-lg-2 col-form-label text-lg-right"><strong>Müşteri Seçimi:</strong></label>
                    <div class="col-lg-3">
                        <select class="form-control select2 " id="kt_select2_3" name="user[]" multiple="" data-select2-id="kt_select2_3" tabindex="-1" aria-hidden="true">
                                <optgroup label="Müşteriler" >
                                    @foreach($users as $user)
                                        <option value="{{$user->id}}">{{$user->full_name}}</option>
                                    @endforeach
                                </optgroup>
                        </select>
                    </div>
                </div>
                <div class="form-group row">
                    <label class="col-lg-2 col-form-label text-lg-right"><strong>Başlangıç Tarihi:</strong></label>
                    <div class="col-lg-3">
                        <div class="input-group date">
                            <input type="text" class="form-control" id="kt_datepicker_2" name="started_at" value="{{old('started_at')}}" placeholder="Başlangıç Tarihi seçin.">
                            <div class="input-group-append">
                                    <span class="input-group-text">
                                        <i class="la la-calendar-check-o"></i>
                                    </span>
                            </div>
                        </div>
                    </div>
                    <label class="col-lg-2 col-form-label text-lg-right"><strong>Bitiş Tarihi:</strong></label>
                    <div class="col-lg-3">
                        <div class="input-group date">
                            <input type="text" class="form-control" id="kt_datepicker_2" name="finished_at" value="{{old('finished_at')}}"  placeholder="Başlangıç Tarihi seçin.">
                            <div class="input-group-append">
                                    <span class="input-group-text">
                                        <i class="la la-calendar-check-o"></i>
                                    </span>
                            </div>
                        </div>
                    </div>

                </div>
                <div class="form-group row">
                    <label class="col-lg-3 col-form-label text-lg-right"><strong>Aktivite olacak mı? (Opsiyonel)</strong></label>
                    <div class="col-lg-3 d-flex justify-content-center">
                        <div class="radio-inline">
                            <label class="radio radio-lg">
                                <input type="radio" onclick="aktivite(0)" @if(old('activity')) checked="checked" @endif name="radios3_1" class="form-control"/>
                                <span></span>
                                Evet
                            </label>
                            <label class="radio radio-lg">
                                <input type="radio" onclick="aktivite(1)" @if(!old('activity')) style='display:none' @endif  name="radios3_1" class="form-control"/>
                                <span></span>
                                Hayır
                            </label>
                        </div>

                    </div>
                </div>
                <div class="form-group row">
                    <label class="col-lg-2 col-form-label text-lg-right" for="kt_select2_2"></label>
                    <div class="col-lg-4">
                        <div class="form-group" id="myAktivite">
                            <label for="kt_select2_2"><strong>Aktivite Seçimi Yapın:</strong></label>
                            <select class="form-control select2 " id="kt_select2_2" name="activity[]" multiple="" data-select2-id="kt_select2_2" tabindex="-1" aria-hidden="true">
                                <optgroup label="Aktiviteler">
                                    @foreach($activities as $activity)
                                        <option value="{{$activity->id}}">{{$activity->title}}</option>
                                    @endforeach
                                </optgroup>
                            </select>

                        </div>
                    </div>
                </div>
            </div>
            <div class="separator separator-dashed my-8"></div>

            <div class="row col-lg-6">
                <div class="col-lg-1"></div>
                <h4 class="title col-lg-4">TUR EKLE</h4>
            </div>
            <div class="separator separator-dashed my-8"></div>
            <div class="form-group row">
                <label class="col-lg-2 col-form-label text-lg-right"><strong>Tur Başlığı:</strong></label>
                <div class="col-lg-3">
                    <input type="text" name="tour_title" value="{{old('tour_title')}}" class="form-control form-control-solid" placeholder="Lütfen tur başlığı giriniz"/>
                </div>
                <label class="col-lg-2 col-form-label text-lg-right"></label>
                <div class="col-lg-3">
                    <div class="custom-file form-group">
                        <input type="file" class="custom-file-input form-control-solid" id="customFile" multiple>
                        <label class="custom-file-label" for="customFile">Resim Yükle</label>
                    </div>
                </div>
            </div>
            <div class="form-group row">
                <label class="col-lg-2 col-form-label text-lg-right" for="editable"><strong>İçerik Detay</strong></label>
                <div class="col-lg-8">
                          <textarea id="editable" class="form-control" placeholder="" name="tour_description" value="{{old('tour_description')}}">
                        </textarea>
                </div>
            </div>
            <div class="row justify-content-md-center">
                <div class="col-md-8">
                    <h3 align="center">Tur Detayı (Gün gün yapılacakları ekleyin):</h3>
                    <br />
                    <div class="table-responsive">
                            <span id="result"></span>
                            <table class="table table-bordered table-striped" id="user_table">
                                <thead>
                                <tr>
                                    <th width="22%">Başlık(Kaçıncı Gün)</th>
                                    <th width="22%">İçerik</th>
                                    <th width="22%">Öğle Yemeği</th>
                                    <th width="22%">Akşam Yemeği</th>
                                    <th width="12%">Action</th>
                                </tr>
                                </thead>
                                <tbody>
                                </tbody>
                                <tfoot>
                                <tr>
                                </tr>
                                </tfoot>
                            </table>
                    </div>
                </div>
            </div>
            <div class="card-footer">
                <div class="row ">
                    <div class="col-lg-10 d-flex justify-content-end">
                        <button type="submit" name="save" id="save" class="btn btn-success mr-2">Kaydet</button>
                        <button type="reset" class="btn btn-secondary">İptal Et</button>
                    </div>
                    <div class="col-lg-2"></div>
                </div>
            </div>
        </form>
    </div>
</div>

我的脚本:

<script>
    $(document).ready(function(){

        var count = 1;

        dynamic_field(count);

        function dynamic_field(number)
        {
            html = '<tr>';
            html += '<td><input type="text" name="title[]" class="form-control" /></td>';
            html += '<td><input type="text" name="description[]" class="form-control" /></td>';
            html += '<td><input type="text" name="lunch[]" class="form-control" /></td>';
            html += '<td><input type="text" name="dinner[]" class="form-control" /></td>';
            if(number > 1)
            {
                html += '<td><button type="button" name="remove" id="" class="btn btn-light-danger remove"><i class="la la-trash-o">Sil</button></td></tr>';
                $('tbody').append(html);
            }
            else
            {
                html += '<td><button type="button" name="add" id="add" class="btn btn-light-success"><i class="la la-plus"> Ekle' +
                    '' +
                    '</button></td></tr>';
                $('tbody').html(html);
            }
        }

        $(document).on('click', '#add', function(){
            count++;
            dynamic_field(count);
        });

        $(document).on('click', '.remove', function(){
            count--;
            $(this).closest("tr").remove();
        });
        $('#dynamic_form').on('submit', function(event){
            event.preventDefault();
            $.ajax({
                url:'{{ route("groups.store") }}',
                method:'post',
                data:$(this).serialize(),
                dataType:'json',
                beforeSend:function(){
                    $('#save').attr('disabled','disabled');
                },
                success:function(data)
                {
                    if(data.error)
                    {
                        var error_html = '';
                        for(var count = 0; count < data.error.length; count++)
                        {
                            error_html += '<p>'+data.error[count]+'</p>';
                        }
                        $('#result').html('<div class="alert alert-danger">'+error_html+'</div>');
                    }
                    else
                    {
                        dynamic_field(1);
                        $('#result').html('<div class="alert alert-success">'+data.success+'</div>');
                    }
                    $('#save').attr('disabled', false);
                }
            })
        });
    });
</script>

我的组模型:

   protected $fillable = [
    'guide_id','code','started_at','finished_at','tour_title','tour_description'
];
public function tourDays(){
    return $this ->hasMany('App\Models\TourDay');
}

我的 TourDay 模型:

  protected $fillable = [
    'group_id','title', 'description','lunch','dinner'
];
public function group(){
    return $this ->belongsTo('App\Models\Group');
}

我的组控制器:

    public function store(Request $request)
{

    $data=$request->only('guide_id','code','started_at','finished_at','tour_title','tour_description');
    $group=Group::create($data);

    
    if($request->ajax())
    {
        $rules = array(
            'title.*'  => 'required',
            'description.*'  => 'required',
            'lunch.*'=>'required',
            'dinner.*'=>'required',
        );
        $error =Validator::make($request->all(), $rules);
        if($error->fails())
        {
            return response()->json([
                'error'  => $error->errors()->all()
            ]);
        }

        $title = $request->title;
        $description = $request->description;
        $lunch = $request->lunch;
        $dinner = $request->dinner;
        for($count = 0; $count < count($title); $count++)
        {

            $tourDay = new TourDay([
                'title' => $title[$count],
                'description'  => $description[$count],
                'lunch' => $lunch[$count],
                'dinner'  => $dinner[$count]]);
            $group->tourDays()->saveMany($tourDay);

            $data = array(
                'title' => $title[$count],
                'description'  => $description[$count],
                'lunch' => $lunch[$count],
                'dinner'  => $dinner[$count]
            );
            $insert_data[] = $data;
        }

        TourDay::insert($insert_data);

    }
    return redirect()
        ->route('groups.index')->withMessage('Rehber başarıyla oluşturuldu!');
}

标签: laravel

解决方案


在您的 store 方法中输入以下代码:

public function store(Request $request) {

    $data=$request->only('guide_id', 'code', 'started_at', 'finished_at','tour_title', 'tour_description');
    $group=Group::create($data);

    if($request->ajax())
    {
        $rules = array(
            'title.*'  => 'required',
            'description.*'  => 'required',
            'lunch.*'=>'required',
            'dinner.*'=>'required',
        );
        $error =Validator::make($request->all(), $rules);
        if($error->fails())
        {
            return response()->json([
                'error'  => $error->errors()->all()
            ]);
        }

        $title = $request->title;
        $description = $request->description;
        $lunch = $request->lunch;
        $dinner = $request->dinner;
        for($count = 0; $count < count($title); $count++)
        {
            $tourDay = [
                'title' => $title[$count],
                'description'  => $description[$count],
                'lunch' => $lunch[$count],
                'dinner'  => $dinner[$count],
                'group_id'  => $group->id
            ];
            TourDay::create($tourDay);
        }

    }
    return redirect()
        ->route('groups.index')->withMessage('Rehber başarıyla oluşturuldu!');
}

推荐阅读