Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

andreScutieri's avatar

SQLSTATE[HY000]: General error: 1364 - Laravel isn't building the query properly

I'm trying to build a simple community system. Nonetheless, Laravel is returning an error every time I submit the form to create a new community (or Hub).

Here's my Hub controller:


<?php

namespace App\Http\Controllers;

use App\Hub;
use App\Group;
use App\Role;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use GrahamCampbell\Markdown\Facades\Markdown;

use App\Events\CreatedHub;

class HubController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function create()
    {
        return view('hubs.createnew');
    }

    public function store(Request $request)
    {
        $this->validator($request->all())->validate();
        event(new CreatedHub($hub = $this->createHub($request->all())));

        return $this->createHubRoles($request->input('name')) ? redirect('/hubs/'.$request->input('name')) : back()->withErrors(array('message' => 'Erro ao criar o Hub.'));

    }

   private function validator(array $data)
    {
        return Validator::make($data, [
            'display_name' => 'required|max:255',
            'name' => 'alpha_dash|max:255|unique:hubs',
            'description' => 'present',
            'visible' => 'boolean',
            'nsfw' => 'boolean',
            'dice' => 'boolean',
        ]);
    }

    private function createHub(array $data)
    {
        return Hub::create([
            'name' => $data['name'],
            'display_name' => $data['display_name'],
            'description' => $data['description'],
            'description_html' => Markdown::convertToHtml($data['description']),
            'visible' => $data['visible'],
            'nsfw' => $data['nsfw'],
            'dice' => $data['dice'],
        ]);
    }

    private function createHubRoles(string $name)
    {
        $owner = Role::find(1);
        $group = $this->createHubGroup($name);
        
        return Auth::user()->attachRole($owner, $group);
    }

    private function createHubGroup(string $name)
    {
        return Group::create([
            'name' => $name,
        ]);
    }

And here is the traceback:

QueryException in Connection.php line 647:

SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value (SQL: insert into `hubs` (`updated_at`, `created_at`) values (2017-02-24 11:26:44, 2017-02-24 11:26:44))

* in Connection.php line 647
* at Connection->runQueryCallback('insert into `hubs` (`updated_at`, `created_at`) values (?, ?)', array('2017-02-24 11:26:44', '2017-02-24 11:26:44'), object(Closure)) in Connection.php line 607
* at Connection->run('insert into `hubs` (`updated_at`, `created_at`) values (?, ?)', array('2017-02-24 11:26:44', '2017-02-24 11:26:44'), object(Closure)) in Connection.php line 450
* at Connection->statement('insert into `hubs` (`updated_at`, `created_at`) values (?, ?)', array('2017-02-24 11:26:44', '2017-02-24 11:26:44')) in Connection.php line 404
* at Connection->insert('insert into `hubs` (`updated_at`, `created_at`) values (?, ?)', array('2017-02-24 11:26:44', '2017-02-24 11:26:44')) in Processor.php line 32
* at Processor->processInsertGetId(object(Builder), 'insert into `hubs` (`updated_at`, `created_at`) values (?, ?)', array('2017-02-24 11:26:44', '2017-02-24 11:26:44'), 'id') in Builder.php line 2196
* at Builder->insertGetId(array('2017-02-24 11:26:44', '2017-02-24 11:26:44'), 'id') in Builder.php line 1319
* at Builder->__call('insertGetId', array(array('updated_at' => '2017-02-24 11:26:44', 'created_at' => '2017-02-24 11:26:44'), 'id')) in Model.php line 674
* at Model->insertAndSetId(object(Builder), array('updated_at' => '2017-02-24 11:26:44', 'created_at' => '2017-02-24 11:26:44')) in Model.php line 639
* at Model->performInsert(object(Builder)) in Model.php line 508
* at Model->save() in Builder.php line 817
* at Builder->create(array('name' => 'hpb', 'display_name' => 'Harry Potter Brasil', 'description' => 'Um hub *inteligente* para quem gosta de [harry potter](http://google.com). Um salve pra galera!', 'description_html' => '<p>Um hub <em>inteligente</em> para quem gosta de <a href="http://google.com">harry potter</a>.</p><p>Um salve pra galera!</p>', 'visible' => '1', 'nsfw' => '1', 'dice' => '0')) in Model.php line 1316
* at Model->__call('create', array(array('name' => 'hpb', 'display_name' => 'Harry Potter Brasil', 'description' => 'Um hub *inteligente* para quem gosta de [harry potter](http://google.com). Um salve pra galera!', 'description_html' => '<p>Um hub <em>inteligente</em> para quem gosta de <a href="http://google.com">harry potter</a>.</p><p>Um salve pra galera!</p>', 'visible' => '1', 'nsfw' => '1', 'dice' => '0'))) in Model.php line 1328
* at Model::__callStatic('create', array(array('name' => 'hpb', 'display_name' => 'Harry Potter Brasil', 'description' => 'Um hub *inteligente* para quem gosta de [harry potter](http://google.com). Um salve pra galera!', 'description_html' => '<p>Um hub <em>inteligente</em> para quem gosta de <a href="http://google.com">harry potter</a>.</p><p>Um salve pra galera!</p>', 'visible' => '1', 'nsfw' => '1', 'dice' => '0'))) in HubController.php line 82
* at HubController->createHub(array('_token' => 'hYCUpZ17qNkk6O124mKfQiP51xm1DMjUMGJ6ZhTb', 'display_name' => 'Harry Potter Brasil', 'name' => 'hpb', 'description' => 'Um hub *inteligente* para quem gosta de [harry potter](http://google.com). Um salve pra galera!', 'visible' => '1', 'nsfw' => '1', 'dice' => '0')) in HubController.php line 30
* at HubController->store(object(Request))
* at call_user_func_array(array(object(HubController), 'store'), array(object(Request))) in Controller.php line 55
* at Controller->callAction('store', array(object(Request))) in ControllerDispatcher.php line 44
* at ControllerDispatcher->dispatch(object(Route), object(HubController), 'store') in Route.php line 203
* at Route->runController() in Route.php line 160
* at Route->run() in Router.php line 559
* at Router->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 30
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SubstituteBindings.php line 41
* at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 43
* at Authenticate->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 65
* at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
* at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64
* at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
* at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
* at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
* at Pipeline->then(object(Closure)) in Router.php line 561
* at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 520
* at Router->dispatchToRoute(object(Request)) in Router.php line 498
* at Router->dispatch(object(Request)) in Kernel.php line 174
* at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 30
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
* at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
* at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ValidatePostSize.php line 27
* at ValidatePostSize->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
* at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 148
* at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
* at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
* at Pipeline->then(object(Closure)) in Kernel.php line 149
* at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
* at Kernel->handle(object(Request)) in index.php line 53
* at require('/Users/andre/Sites/deepnerd/public/index.php') in server.php line 106

Aparently, it's not sending the $request info to the query builder, and the query builder is simply trying to make a query with just the timestamps, which fails because the 'name' field is not nullable. What I don't understand is why the query builder isn't getting the $request info.

Thanks for any help!

0 likes
3 replies
J_shelfwood's avatar

Well, let's try to dd($request) to see if there's something in your request at all. This might shed some light or allow you to correct some typo's if that's the case.

andreScutieri's avatar

Thank you for your answer. Yes, the request is here:

Request {#39 ▼
  #json: null
  #convertedFiles: null
  #userResolver: Closure {#175 ▼
    class: "Illuminate\Auth\AuthServiceProvider"
    this: AuthServiceProvider {#20 …}
    parameters: {▶}
    use: {▶}
    file: "/Users/andre/Sites/deepnerd/vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php"
    line: "85 to 87"
  }
  #routeResolver: Closure {#176 ▼
    class: "Illuminate\Routing\Router"
    this: Router {#22 …}
    use: {▼
      $route: Route {#135 ▶}
    }
    file: "/Users/andre/Sites/deepnerd/vendor/laravel/framework/src/Illuminate/Routing/Router.php"
    line: "514 to 516"
  }
  +attributes: ParameterBag {#41 ▼
    #parameters: []
  }
  +request: ParameterBag {#40 ▼
    #parameters: array:7 [▼
      "_token" => "hYCUpZ17qNkk6O124mKfQiP51xm1DMjUMGJ6ZhTb"
      "display_name" => "Harry Potter Brasil"
      "name" => "hpb"
      "description" => """
        Um hub *inteligente* para quem gosta de [harry potter](http://google.com).\r\n
        \r\n
        Um salve pra galera!
        """
      "visible" => "1"
      "nsfw" => "1"
      "dice" => "0"
    ]
  }

And my HubsTable is here:


public function up()
    {
        Schema::create('hubs', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name')->unique()->index();
            $table->string('display_name');
            $table->text('description')->nullable();
            $table->text('description_html')->nullable();
            $table->boolean('visible')->default(True);
            $table->boolean('nsfw')->default(False);
            $table->boolean('dice')->default(False);
            $table->boolean('official')->default(False);
            $table->timestamps();
        });
CaptainHypertext's avatar

I believe Hub::create([]) will only populate FILLABLE fields. Try adding a protected $fillable property to your Hub model with those fields and see if it works then.

Please or to participate in this conversation.