Level 1
Also displaying the data in a blade.php file for both models work, it is just adding the data, which seems to be the issue.
Good day,
I am currently attempting to do CRUD operations in one controller for a specific page, I managed to do the first "inserting data" correctly to the SQL server, however, for some odd reason the other function does not insert the data and I just don't see my mistake, please see below code.
PLEASE NOTE: I am trying to make the apiAddEntryType function work.
When I fill in the form and submit the data, the page just reloads.
Form
<div class="modal fade updateTableModel" id="addSectionTypeModel" tabindex="-1" aria-labelledby="addSectionTypeModelLabel" aria-hidden="true">
<div class="modal-dialog">
<form method="post" action="{{ route('api-sectionType') }}">
@csrf
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addSectionTypeModelLabel">Create Section Type</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="sectionType">{{ __('Section Type') }}</label>
<input id="sectionType" type="text" class="form-control @error('sectionType') is-invalid @enderror" name="sectionType" value="{{ old('sectionType') }}" required autocomplete="sectionType" autofocus>
@error('sectionType')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group">
<label for="sectionValue">{{ __('sectionValue') }}</label>
<input id="sectionValue" type="text" class="form-control @error('sectionValue') is-invalid @enderror" name="sectionValue" value="{{ old('sectionValue') }}" autocomplete="sectionValue" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group">
<label for="description">{{ __('description') }}</label>
{{-- <input id="description" type="text" class="form-control @error('description') is-invalid @enderror" name="description" autocomplete="description"> --}}
<textarea id="description" type="text" class="form-control @error('description') is-invalid @enderror" name="description" autocomplete="description" rows="5"></textarea>
@error('description')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-success">Save</button>
</div>
</div>
</form>
</div>
</div>
Controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\ent_sectionType;
use App\Models\ent_entryType;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Validator;
class AdminEntry extends Controller
{
// Create a Function to log the user in
public function index()
{
$data['entryType'] = ent_entryType::leftJoin('sys_users', 'ent_entryType.modifiedBy', '=', 'sys_users.userID')
->join('sys_status', 'ent_entryType.statusID', '=', 'sys_status.statusID')
->get(['ent_entryType.*', 'sys_status.status', 'sys_users.username']);
$data['sectionType'] = ent_sectionType::leftJoin('sys_users', 'ent_sectionType.modifiedBy', '=', 'sys_users.userID')
->join('sys_status', 'ent_sectionType.statusID', '=', 'sys_status.statusID')
->get(['ent_sectionType.*', 'sys_status.status', 'sys_users.username']);
// $data['entryType'] = $entryType;
// $data['sectionType'] = $sectionType;
return view('livewire.admin.entry', ['data' => $data]);
}
/******************************* Entry Type *******************************/
public function apiAddEntryType(Request $request)
{
$request->validate([
'entryType' => 'required|string|unique:ENT_EntryType|min:3|max:18',
'prefix' => 'required|max:4',
'delimiter' => 'max:1',
'description' => 'required|min:10|max:100'
]);
// Connect the Model to a variable
$entryType = new ent_entryType();
// Assign variables to table columns
$entryType->entryType = $request->entryType;
$entryType->prefix = $request->prefix;
$entryType->delimiter = $request->delimiter;
$entryType->statusID = 1;
$entryType->description = $request->description;
// Save data to the database
$result = $entryType->save();
// Check if it was a successful, otherwise print error.
if ($result) {
return back()->with('success', 'Saved Successfully');
} else {
return back()->with('error', 'An error occurred);
}
}
public function apiEditEntryType(Request $request)
{
$request->validate([
'entryType' => 'required|string|unique:ENT_EntryType|min:3|max:18',
'prefix' => 'required|max:4',
'delimiter' => 'max:1',
'description' => 'required|min:10|max:100'
]);
// Connect the Model to a variable
$entryType = ent_entryType::where('entryTypeID', '=', $request->entryTypeID)->first();
if ($entryType) {
return back()->with('success', 'Saved Successfully');
dd();
} else {
return back()->with('error', 'An error occurred);
dd();
}
if ($entryType) {
// Assign variables to table columns
// $userID = $request->session()->get('userID');
$entryType->entryType = $request->entryType;
$entryType->prefix = $request->prefix;
$entryType->delimiter = $request->delimiter;
$entryType->statusID = $request->statusID;
$entryType->description = $request->description;
// $entryType->modifiedBy = $userID;
$entryType->modifiedDate = date('d-m-y h:i:s');
// Save data to the database
$result = $entryType->save();
// Check if it was a successful, otherwise print error.
if ($result) {
return back()->with('success', 'Saved Successfully');
} else {
return back()->with('error', 'An error occurred);
}
}
}
/******************************* Entry Type *******************************/
/******************************* Section Type *******************************/
public function apiAddSectionType(Request $request)
{
$request->validate([
'sectionType' => 'required|string|unique:ENT_SectionType|min:3|max:50',
'value' => 'required|max:20',
'description' => 'required|min:10|max:100'
]);
// Connect the Model to a variable
$sectionType = new ent_sectionType();
$userID = $request->session()->get('userID');
// Check if it was a successful, otherwise print error.
// Assign variables to table columns
$sectionType->sectionType = $request->sectionType;
$sectionType->value = $request->value;
$sectionType->statusID = 1;
$sectionType->default = 1;
$sectionType->description = $request->description;
$sectionType->modifiedBy = $userID;
$sectionType->modifiedDate = date('d-m-y h:i:s');
// Save data to the database
$result = $sectionType->save();
// Check if it was a successful, otherwise print error.
if ($result) {
return back()->with('success', 'Saved Successfully');
} else {
return back()->with('error', 'An error occurred);
}
}
public function apiEditSectionType(Request $request)
{
$request->validate([
'entryType' => 'required|string|unique:ENT_EntryType|min:3|max:18',
'prefix' => 'required|max:4',
'delimiter' => 'max:1',
'description' => 'required|min:10|max:100'
]);
// Connect the Model to a variable
$sectionType = ent_entryType::where('entryTypeID', '=', $request->sectionType)->first();
if ($sectionType) {
// Assign variables to table columns
$userID = $request->session()->get('userID');
$sectionType->sectionType = $request->sectionType;
$sectionType->value = $request->value;
$sectionType->statusID = $request->statusID;
$sectionType->description = $request->description;
$sectionType->modifiedBy = $userID;
$sectionType->modifiedDate = date('d-m-y h:i:s');
// Save data to the database
$result = $sectionType->save();
// Check if it was a successful, otherwise print error.
if ($result) {
return back()->with('success', 'Saved Successfully');
} else {
return back()->with('error', 'An error occurred);
}
}
}
/******************************* Entry Type *******************************/
}
web.php
use Illuminate\Support\Facades\Route;
// Import Controllers - Authentications
use App\Http\Controllers\AuthUser;
// Import Controllers - Admin
use App\Http\Controllers\AdminSystemParameter;
use App\Http\Controllers\AdminEntry;
use App\Http\Livewire\Signin;
// Administraion
use App\Http\Livewire\AdminIndex;
use App\Http\Livewire\AdminInputGroup;
use App\Http\Livewire\AdminColours;
use App\Http\Livewire\AdminWebSetup;
use App\Http\Livewire\Admin\Users\RegisterSystemUser;
use App\Http\Livewire\Admin\Users\SystemUsers;
// Home
use App\Http\Livewire\Index;
use App\Http\Livewire\Counter;
/*
|--------------------------------------------------------------------------
| Authentication
|--------------------------------------------------------------------------
*/
// Route for login
Route::group(['middleware' => 'alreadyloggedin'], function () {
Route::get('/login', [AuthUser::class, 'login']);
Route::post('/api-loginUser', [AuthUser::class, 'apiLoginUser'])->name('api-login-user');
// Route for register
Route::get('/register', [AuthUser::class, 'registration']);
Route::post('/admin/user/register/api-registerUser', [AuthUser::class, 'apiRegisterUser'])->name('api-register-user');
});
// Route for logout
Route::get('/api-logoutUser', [AuthUser::class, 'apiLogoutUser']);
Route::group(['middleware' => 'usersession'], function () {
/*
|--------------------------------------------------------------------------
| Administration
|--------------------------------------------------------------------------
*/
/** Admin **/
Route::get('/admin/index', AdminIndex::class)->name('admin');
Route::get('/admin/inputGroup', AdminInputGroup::class)->name('admin');
Route::get('/admin/colours', AdminColours::class)->name('admin');
Route::get('/admin/webSetup', AdminWebSetup::class)->name('admin.websetup');
Route::get('/admin/user', SystemUsers::class)->name('admin.user');
Route::get('/admin/systemParameter', [AdminSystemParameter::class, 'index']);
/** Entry Config **/
Route::get('/admin/entry', [AdminEntry::class, 'index']);
// Add Entry Type
Route::post('/admin/entry/create/api-entryType', [AdminEntry::class, 'apiAddEntryType'])->name('api-entryType');
Route::post('/admin/entry/create/api-sectionType', [AdminEntry::class, 'apiAddSectionType'])->name('api-sectionType');
// Home
Route::get('index', Index::class);
Route::get('counter', Counter::class);
});
Migration
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('ENT_SectionType', function (Blueprint $table) {
$table->id('sectionTypeID');
$table->string('sectionType', 50)->unique();
$table->string('sectionValue', 20);
$table->integer('default');
$table->unsignedBigInteger('statusID');
$table->foreign('statusID')->references('statusID')->on('sys_status')->onDelete('cascade');
$table->longtext('description')->nullable();
$table->unsignedBigInteger('modifiedBy')->nullable();
$table->foreign('modifiedBy')->references('userID')->on('sys_users');
$table->dateTimeTz('modifiedDate')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('ENT_SectionType');
}
};
Model
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
// use Spatie\Permission\Traits\HasRoles;
class ent_sectionType extends Model
{
use HasApiTokens, HasFactory, Notifiable;
protected $table = 'ENT_SectionType';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'sectionType',
'sectionValue',
'statusID',
'description',
'modifiedBy',
'modifiedDate'
];
/**
* The attributes that should be cast.
*
* @var array
*/
protected $casts = [
'modifiedDate' => 'datetime',
];
}
Please or to participate in this conversation.