Alewa's avatar
Level 2

Laravel godaddy data inserting error

I have upload my laravel web project onto godaddy server, when i insert data into my database on my localhost, the data is entered correctly, but when i try to insert data into my database on godaddy server i get SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (SQL: insert into `resources` (`title`, `slug`, `image`, `file`, `updated_at`, `created_at`) values (test, test, 38262.png, 1623965617.pdf, 2021-06-17 21:33:37, 2021-06-17 21:33:37)) error. Any help?

0 likes
6 replies
Alewa's avatar
Level 2

This is my ResourceController

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Resource;
use App\Models\Category;
use App\Models\User;
use Illuminate\Support\Str;
use Carbon\Carbon;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;

class ResourceController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $resources = Resource::latest()->get();
        return view('admin.resource.index',compact('resources'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $categories = Category::all();
        return view('admin.resource.create',compact('categories'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request,[
          'title' => 'required|unique:resources,title',
          'categories' => 'required',
          'file' => 'required|mimes:pdf|max:10000',
          'image' => 'required',
        ]);
        $slug = Str::slug($request->title);

        if($request->hasFile('image')){
          $image_tmp = $request->file('image');
          if ($image_tmp->isValid()) {
            // Upload Images after Resize
            $extension = $image_tmp->getClientOriginalExtension();
	        $imageName = rand(111,99999).'.'.$extension;
            $large_image_path = 'public/assets/frontend/img/resource'.'/'.$imageName;

	        Image::make($image_tmp)->save($large_image_path);

          }
        }
		
		if($request->file('file')){
			$file = $request->file('file');
			$fileName = time().'.'.$request->file->extension();  
            $request->file->move('public/assets/frontend/img/pdf/', $fileName);
		}

        $resource = New Resource();
        $resource->title = $request->title;
        $resource->slug = $slug;
        $resource->image = $imageName;
		$resource->file = $fileName;
        $resource->save();
        $resource->categories()->attach($request->categories);

        return redirect()->route('admin.resource.index')->with('message', 'Resource Added Successfully');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $resource = Resource::find($id);
        $categories = Category::all();
        return view('admin.resource.show',compact('resource','categories'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $resource = Resource::find($id);
        $categories = Category::all();
        return view('admin.resource.edit',compact('resource','categories'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $this->validate($request,[
          'title' => '',
          'categories' => '',
          'image' => 'image',
          'file' => 'mimes:pdf|max:10000',
        ]);
        $resource = Resource::find($id);
        $slug = Str::slug($request->title);

        if($request->hasFile('image')){
          $image_tmp = $request->file('image');
          if ($image_tmp->isValid()) {
            // Upload Images after Resize
            $extension = $image_tmp->getClientOriginalExtension();
	        $imageName = rand(111,99999).'.'.$extension;
            $large_image_path = 'public/assets/frontend/img/resource'.'/'.$imageName;

	        Image::make($image_tmp)->save($large_image_path);

                }
          }else if(!empty($data['current_image'])){
            $imageName = $data['current_image'];
          }else{
            $imageName = $resource->image;
        }
		
		if($request->file('file')){
			$file = $request->file('file');
			$fileName = time().'.'.$request->file->extension();  
            $request->file->move('public/assets/frontend/img/pdf/', $fileName);
		}else{
          $fileName = $resource->file;
        }

        $resource->title = $request->title;
        $resource->slug = $slug;
        $resource->image = $imageName;
		$resource->file = $fileName;
        $resource->save();
        $resource->categories()->sync($request->categories);

        return redirect()->route('admin.resource.index')->with('message', 'Resource Updated Successfully');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        Resource::where('id',$id)->delete();
        return redirect()->back()->with('message', 'Resource Deleted Successfully');
    }
}
jlrdw's avatar

You did upload your database correct and remember Linux is case sensitive.

1 like
Snapey's avatar

How did you create the database? It looks like you don't have autoincrement in the id column ?

Alewa's avatar
Level 2

i am using laravel 8, so i use the default id column, example this is my resources_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateResourcesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('resources', function (Blueprint $table) {
            $table->id();
            $table->string('title')->unique();
            $table->string('slug');
            $table->string('pdf_file');
            $table->string('image')->default('default.png');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('resources');
    }
}
Snapey's avatar

You did not say how you created the database on the godaddy server?

I can see you have a migration, but did you run it?

Check with your database management tool. Is the id column auto increment?

1 like

Please or to participate in this conversation.