簡體   English   中英

數據未從Laravel 5.4中的控制器存儲到數據庫中

[英]Data is not storing into database from the controller in Laravel 5.4

這是路線代碼

Route::resource('/catalog', 'CatalogController');

CatalogController.php

public function store(Request $request)
{
    $this->validate($request,[
        'cat_name'=>'required',
        'cat_desc'=>'required',
        'short_name'=>'required|min:0|integer',
        'category_image'=>'required'
    ]);
    $categories=new Category;

    $title=$request->get('cat_name');
    $desc=$request->get('cat_desc');
    $short_name=$request->get('short_name');
    $categories['cat_name']=$title;
    $categories['cat_desc']=$desc;
    $categories['short_name']=$short_name;

    if($request->file('image')){
        $file=$request->file('image');
        $imgname=$file->getClientOriginalName();
        $file->move('images',$imgname);
    }

    $categories['category_image']=$imgname;
    $categories->save();
    return redirect('/catalog');

}

控制器代碼是否有問題? 獲取數據沒有問題,我已經通過返回每一行來檢查它們。 但是每次我嘗試插入數據時,它都會返回到同一創建頁面。

這是create.blade.php的代碼

<div class="row">
    <div class="col-lg-20">
    <h2 style="color: lightslategrey; padding-left: 30px;">Create Category</h2>

    {!!Form::open(['method'=>'POST', 'action'=>'CatalogController@store','files'=>true ])!!}
        {{ csrf_field() }}

                <div class="form-group row" style="padding-left: 60px; padding-top: 30px; width: 1350px;">
                    <label for="cat_name" class="col-2 col-form-label">Category Title :</label>
                    <input class="form-control" name ="cat_name" type="text" placeholder="Enter Title" required>
                </div>

                <div class="form-group row" style="padding-left: 60px; padding-top: 10px; width: 1350px;">
                    <label for="cat_desc" class="col-2 col-form-label">Category Description :</label>
                    <textarea class="form-control" name ="cat_desc" rows= "3" type="text" placeholder="Enter Description" required></textarea>
                </div>

                <div class="form-group row" style="padding-left: 60px; padding-top: 10px; width: 1350px;">
                    <label for="short_name" class="col-2 col-form-label">Short Name</label>
                    <input  class="form-control" name ="short_name" type="text" placeholder="Enter Short Name" required>
                </div>

                <div class="form-group row" style="padding-left: 60px; padding-top: 10px; width: 1350px;">
                    <label for="image" class="col-2 col-form-label">Upload Image:</label>
                    <input class="form-control" name ="image" type="file" placeholder="Choose a Image" required>
                </div>
                <br/>
                <br/>
                <div class="form-group ">
                    <div class="col-lg-8 col-lg-offset-5">
                        <button class = 'btn btn-success' type="submit" style="width: 200px;">Add Category</button>
                    </div>
                </div>
         {!! Form::close()  !!}
     </div>
</div>

我不知道是什么問題。 在其他控制器中運行相同的代碼。 但這不起作用,數據庫連接和模型沒有問題。

似乎您正在嘗試將模型用作數組,但將其用作對象,因此箭頭表示法是正確的選擇。 https://laravel.com/docs/5.5/eloquent#retrieving-models

public function store(Request $request)
{
    $this->validate($request,[
        'cat_name'=>'required',
        'cat_desc'=>'required',
        'short_name'=>'required|min:0|integer',
        'category_image'=>'required'
    ]);

    $category = new Category;
    $category->cat_name = $request->get('cat_name');
    $category->cat_desc = $request->get('cat_desc');
    $category->short_name = $request->get('short_name');


    $file = $request->file('image');
    $imageName = $file->getClientOriginalName();
    $file->move('images', $imgname);
    $category->category_image = $imageName;
    $category->save();

    return redirect('/catalog');
}

我已經為您更新了代碼段,並對其進行了一些簡化。 您應該更精確地使用變量命名,例如$ categories(在您的代碼中)僅代表一個類別。 如果您在驗證中聲明了圖像,則不必在條件聲明中進行圖像處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM