Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Extends e envio para o banco


Carlos Rocha

Pergunta

Tenho uma abela de usuarios e uma tabela de administradores e clientes.

Gostaria de uma ajuda para implementar um cadastro

 

users -> name, login, passord (pronta)

admins -> user_id, registratiom, etc..
client -> user_id, registratiom, etc...


Queria ajuda para extender de user as classes Admin e Client

Olhem como estáAdmin

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

class Admin extends User
{
    use HasFactory;  
    
    protected $fillable = [
        'name',
        'email',
        'password',
        'registration'
    ]; 

    private string $registration;

    public function create(
        string $name, 
        string $email, 
        string $password,
        string $registration
    )
    {
        //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);
        parent::$name = $name;
        parent::$email = $email;
        parent::$password = $password;
        $this->registration = $registration;
    }

}

User

<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;

class User extends Authenticatable
{
    /** @use HasFactory<\Database\Factories\UserFactory> */
    use HasFactory, Notifiable;

    static string $name;
    static string $email;
    static string $password;
    /**
     * The attributes that are mass assignable.
     *
     * @var list<string>
     */
    protected $fillable = [
        'name',
        'email',
        'password',
    ];
    
    /**
     * The attributes that should be hidden for serialization.
     *
     * @var list<string>
     */
    protected $hidden = [
        'remember_token',
    ];

    /**
     * Get the attributes that should be cast.
     *
     * @return array<string, string>
     */
    protected function casts(): array
    {
        return [
            'email_verified_at' => 'datetime',
            'password' => 'hashed',
        ];
    }
    
    public function roles() : BelongsToMany {
        return $this->belongsToMany(Role::class);
    }  

    public function hasHole(Array $roleName): bool
    {        
        foreach ($this->roles as $role) {
            if ($role->name === $roleName) {
                return true;
            }
        }
        return false;
    }    

    public function hasHoles(Array $rolesName): bool
    {        
        foreach ($this->roles as $role) {
            foreach ($rolesName as $rolee) {
            if ($role->name === $rolee) {
                return true;
            }
         }
        }
        return false;
    }    

    public function hasAbility(string $ability): bool
    {
        foreach ($this->roles as $role) {
            if ($role->abilities->contains('name', $ability)) {
                return true;
            }
        }
        return false;
    }    
}

Como gravar um Admin na tabela admins sendo que ele é um User por extensão?

Tentei assim mas é claro que está errado...

public function store(Request $request, Admin $adminModel) {

        $dados = $request->validate([
            "name" => "required",
            "email" => "required|email",
            "password" => "required",
            "registration" => "required"
        ]);
        $dados["password"] =  Hash::make($dados["password"]);
        
        $admin = Admin::where("registration",  $dados["registration"])->first();
        
        if ($admin) 
            return 
                  redirect()->route("admin.new")
                            ->withErrors([
                                'fail' => 'Administrador já cadastrados<br>, favor verificar!'
                  ]);
                  
        $newAdmin = $adminModel->create(
                                   $dados['name'],
                                   $dados['email'],
                                   $dados['password'],
                                   $dados['registration']
                                );
        dd($newAdmin);
        $adminModel->save();
        //$adminModel::create($admin);
        
        return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');

    }

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652k
×
×
  • Criar Novo...