mardi 15 juin 2021

Laravel 8 Cannot Insert Or Update Data In A Certain Table

I'm new to Laravel, and I have been struggling to insert data into a certain table, hods. The table only has two fields, a unique id, and a foreign key called user_id.

Below is the code for the Hod model:

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Hod extends Model
{
    use HasFactory;

    protected $table = 'hods';

    protected $primaryKey = 'id';

    protected $fillable = 'user_id';
}

Below is the code for the method in my controller where I want the query to take place:

    public function createHOD(Request $request)
    {
        // Validate Form Input
        $validator = Validator::make($request->all(), [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email,except,id',
            'password' => 'required|string|min:8|confirmed',
        ]);

        // If Validation Is Successful
        if (!$validator->fails()) {

            // Create User THIS QUERY WORKS FINE    
            $user = User::create([
                'name' => $request->input('name'),
                'email' => $request->input('email'),
                'password' => Hash::make($request->input('password')),
                'user_type' => "HOD"
            ]);

            // Attaching 'HOD' Role To User
            $user->attachRole('HOD');

            // Adding The User To The HOD Table NOT WORKING
            $hod = new Hod();
            $hod->user_id = $user->id;
            $hod->save();

            // TRIED THIS TOO, ALSO NOT WORKING
            DB::table('hods')->insert(
                ['user_id' => $user->id],
            );

            return response()->json(['success' => 'HOD Successfully Created.']);
        } else {
            // Return Error Messages
            return response()->json(['error' => $validator->errors()->all()]);
        }
    }

I'm making use of AJAX, below is the code that handles that aspect:


            $("#hodSubmit").click(function(e) {
                e.preventDefault();

                var _token = $("input[name=_token]").val();
                var name = $("input[name=hod_name]").val();
                var email = $("input[name=hod_email]").val();
                var password = $("input[name=hod_password]").val();
                var password_confirmation = $("input[name=hod_confirmation]").val();

                $.ajax({
                    url: "",
                    type: 'POST',
                    data: {
                        _token: _token,
                        name: name,
                        email: email,
                        password: password,
                        password_confirmation: password_confirmation
                    },
                    success: function(data) {
                        if ($.isEmptyObject(data.error)) {
                            $("#hodForm")[0].reset();
                            printSuccessMsg("hod");
                        } else {
                            printErrorMsg(data.error, "hod");
                        }
                    }
                });
            });

Please let me know if you require additional code or further explanation. Thanks



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire