I am trying to insert a new record customer into MySQL database as following:
$customer = Customer::create(['name'=>$request->customerName,
'email'=>$request->customerEmail,
'phone'=>$request->customerPhone,
'area_id'=>$request->customerArea,
'gender'=>$request->customerGender]);
dd($customer->id);
It works well with myISAM storage engine and a new record is there, but not working with InnoDB, the post request returns 200 with no record in the database. While the dump dd() returns the new ID as it's auto incremented. The ID is taken already, as when I insert a new record it gives me a newer ID than previous one, with no record in the database also.
Here's Customer model structure:
namespace App\Models\User;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
protected $fillable = [
'name', 'phone', 'email', 'area_id', 'gender'
];
protected $table = 'customers';
}
And here's customers table structure:
When using InnoDB, you need to know at least a little about "transactions".
If you have autocommit=ON, each statement (such as INSERT) will be a transaction unto itself and will be automatically COMMITTed.
If you have autocommit=OFF, you must eventually issue COMMIT. This is because the statements (INSERTs, etc) are being collected in a "transaction".
The latter case fits the symptoms.