функция create () не работает и не выдает ошибку (Laravel) - PullRequest
1 голос
/ 04 октября 2019

Я хочу вставить данные в базу данных, но когда я запускаю функцию, она не работает и не выдает ошибку, данные не вставляются в базу данных, но не показывают ошибку? почему я должен это делать?

public function index(){
    $data_subgroup = \App\Subgroup::all();
    $data_category = \App\Module::all();
    return view('/dashboard/subgroup', ['data_subgroup' => $data_subgroup,
                                        'data_category' => $data_category,                                        
    ]);
}

public function create(Request $request){

    $this->validate($request, [
        'subgroup_logo' => 'file|image|mimes:jpeg,png,jpg|max:2048',
        'subgroup_name' => 'required',
        'module_id'     => 'required'
    ]);

    $subgroup_logo = $request->file('subgroup_logo');
        $filename ='subgroups/'  . time() . '.' . $subgroup_logo->getClientOriginalExtension(); //Memecah Filename
        Image::make($subgroup_logo)->resize(200, 200)->save( public_path('/uploads/' . $filename)); //Resize dan Save Avatar ke Database

    Subgroup::create([
        'subgroup_logo' => $filename,
        'subgroup_name' => $request->subgroup_name,
        'module_id'   => $request->module_id
    ]);
    return redirect()->back();
}

Это мой код маршрута:

    Route::get('/dashboard/subgroup', 'Dashboard\SubgroupController@index');
Route::post('/dashboard/subgroup/create', 'Dashboard\SubgroupController@create');

Это мой код модели:

class Subgroup extends Model{
protected $table = 'subgroup';
public $timestamps = false;
protected $primaryKey = 'subgroup_id';

protected $fillable = ['subgroup_id', 'subgroup_name', 'subgroup_logo', 'module_id'];

public function module(){
    return $this->belongsTo('App\Module' , 'module_id');
}

}

ОБНОВЛЕНИЕ: я думаю, что ошибка от вставки данных из опции выбора,

я изменяю:

$this->validate($request, [
    'subgroup_logo' => 'file|image|mimes:jpeg,png,jpg|max:2048',
    'subgroup_name' => 'required',
    'module_id'     => 'required'
]);

на:

Validator::make($request->all(), [
        'subgroup_logo' => 'file|image|mimes:jpeg,png,jpg|max:2048',
        'subgroup_name' => 'required',
        'module_id'     => 'integer|required'
    ]);

У меня есть выбор выбора:

<label for="category">Select Category</label>
                    <select class="form-control form-control-sm">
                        @foreach($data_category as $category)
                        <option id="module_id" name="module_id" value="{{$category->module_id}}">
                            {{$category->module_name}}</option>
                        @endforeach
                    </select>

У меня ошибка:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'module_id' не может быть пустым (SQL: вставить в subgroup (subgroup_logo,subgroup_name, module_id) значения (подгруппы / 1570166504.png, UNSIKA,?))

Ответы [ 3 ]

1 голос
/ 04 октября 2019

Установить атрибут имени для выбранного входа. Вы установили его в теге option, что неверно

<select class="form-control form-control-sm" name="module_id">
                        @foreach($data_category as $category)
                        <option id="module_id" name="module_id" value="{{$category->module_id}}">
                            {{$category->module_name}}</option>
                        @endforeach
                    </select>
0 голосов
/ 04 октября 2019
//set name and id attribute to your select input then check it.it's should 
//  be works properly.

  <label for="category">Select Category</label>
  <select class="form-control form-control-sm" name="module_id" id="module_id">
      @foreach($data_category as $category)
          <option value="{{$category->module_id}}">
              {{$category->module_name}}</option>
      @endforeach      
  </select>
0 голосов
/ 04 октября 2019
<label for="category">Select Category</label>
                    <select class="form-control form-control-sm"  name="module_id">
                        @foreach($data_category as $category)
                         <option id="module_id" name="module_id" value="{{$category->module_id}}">
                        {{$category->module_name}}</option>


                        @endforeach
                    </select>
...