как хранить полиморфные отношения - PullRequest
0 голосов
/ 15 октября 2019

Я хочу сделать зависимый выпадающий список, есть 2 модели, которые должны перечислить свои данные и сохранить их в таблице счетов. Я правильно установил их связь в модели. в первой опции выбора я ставлю «лицо» и «сотрудник» статические. и сделал условие для получения своих данных. Я зашел так далеко, это работает как-то, но мне интересно, как хранить данные в контроллере. любая помощь будет очень признательна.

 Account Model

public function accountable()
 {
    return $this->morphTo();
 }



 Employee Model

class Employee extends Model
{
  protected $guarded = [];
 public function account()
{
    return $this->morphOne(Account::class, 'accountable');
}
}


Person Model

class Person extends Model
{
protected $guarded = [];

public function accounts()
{
    return $this->morphMany(Account::class, 'accountable');
}
}

это форма

 <div class="form-group">
                        <label class="col-md-3 control-label">Accountable</label>
                        <div class="col-md-5">
                           <select class="form-control select2me" name="accountable_type">
                                <option value=""></option>
                                <option value="person">Person</option>
                                <option value="employee">Employee</option>
                            </select>    
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-md-3 control-label">Accountable_Type</label>
                        <div class="col-md-5">
                           <select name="accountable_id" class="form-control select2me">
                                {{-- <option value=""></option> --}}
                            </select>   
                        </div>
                    </div>

Это ajax

<script>

 $(document).ready(function() {


    $('select[name="accountable_type"]').on('change', function() {
        var person_id = $(this).val();
        if(person_id == 'person') {
            $.ajax({
                url: "{{URL('get_person')}}",
                type: "GET",
                dataType: "json",
                success:function(data) {


                    $('select[name="accountable_id"]').empty();
                    $.each(data, function(key, value) {
                        $('select[name="accountable_id"]').append('<option value="'+ key +'">'+ 
value.name +'</option>');
                    });


                }
            });
        }else{
            $('select[name="accountable_id"]').empty();
        }
    });

    $('select[name="accountable_type"]').on('change', function() {
        var employee_id = $(this).val();
        if(employee_id == 'employee') {
            $.ajax({
                url: "{{URL('get_employee')}}",
                type: "GET",
                dataType: "json",
                success:function(data) {


                    $('select[name="accountable_id"]').empty();
                    $.each(data, function(key, value) {
                        $('select[name="accountable_id"]').append('<option value="'+ key +'">'+ 
value.name +'</option>');
                    });


                }
            });
        }else{
            $('select[name="accountable_id"]').empty();
        }
    });
});

</script>
...