Olá, estou aprendendo PDO e gostaria de saber algumas informações sobre ele:
Quando eu estou usando para fazer uma consulta eu devo usar sempre o try e catch, por exemplo em todas páginas com consultas SQL?
No código abaixo:
$searchSQL = $pdo->prepare('SELECT email,senha FROM tbl_usuario WHERE email = ?');
$searchSQL->execute(array($email));
$linha = $searchSQL->fetch(PDO::FETCH_ASSOC);
Eu devo inserir a seguinte linha, ou não tem nada a ver com esse tipo de programação:
$buscaSQL->bindValue(1, $email, PDO::PARAM_STR); // Seria algo assim?
Ou eu somente insiro a linha acima se for assim:
$buscaSQL = $pdo->prepare('SELECT email FROM tbl_usuario WHERE email = :email');
$buscaSQL->bindValue(:email, $email, PDO::PARAM_STR);
$buscaSQL->execute(array($email));
3. Qual dos dois tipos é mais profissional, o com ?,? ou :campo,:id
4. No segundo tópico, quando eu for fazer o execute eu sempre preciso passar as variáveis ou posso só colocar $SQL->execute()
5. Alguém me explica de um jeito bem fácil a diferença entre BindValue e BindParam(eu li que se difere somente que o Value, seria como se passasse a variável direto no banco, no caso na hora do execute, então eu posso digitar 100 vezes outro valor e o valor vai ser sempre o 1° e Param não, ele muda se você atribuir outro valor, talvez por isso que seja Value(duh)).
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');
}
Gostaria de tirar uma dúvida com os amigos, referente a PDV.
Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.
Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
a baixa direto dos produtos no estoque
ou
somente após concretizar a venda o sistema baixa os produtos do estoque ?
Estou com uma pequena dúvida referente a Teclas de Atalho.
Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
ou seja:
se estiver para letra minúscula ====> funciona
se estiver para letra maiúscula ====> não funciona
Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?
o Código está assim:
document.addEventListener( 'keydown', evt => {
if (!evt.ctrlKey || evt.key !== 'r' )
return;// Não é Ctrl+r, portanto interrompemos o script
evt.preventDefault();
});
Grato,
Estou com a seguinte dúvida:
--> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.
Olá, estou aprendendo PDO e gostaria de saber algumas informações sobre ele:
$searchSQL = $pdo->prepare('SELECT email,senha FROM tbl_usuario WHERE email = ?'); $searchSQL->execute(array($email)); $linha = $searchSQL->fetch(PDO::FETCH_ASSOC);
Eu devo inserir a seguinte linha, ou não tem nada a ver com esse tipo de programação:
$buscaSQL->bindValue(1, $email, PDO::PARAM_STR); // Seria algo assim?
Ou eu somente insiro a linha acima se for assim:
$buscaSQL = $pdo->prepare('SELECT email FROM tbl_usuario WHERE email = :email'); $buscaSQL->bindValue(:email, $email, PDO::PARAM_STR); $buscaSQL->execute(array($email));
3. Qual dos dois tipos é mais profissional, o com ?,? ou :campo,:id
4. No segundo tópico, quando eu for fazer o execute eu sempre preciso passar as variáveis ou posso só colocar $SQL->execute()
5. Alguém me explica de um jeito bem fácil a diferença entre BindValue e BindParam(eu li que se difere somente que o Value, seria como se passasse a variável direto no banco, no caso na hora do execute, então eu posso digitar 100 vezes outro valor e o valor vai ser sempre o 1° e Param não, ele muda se você atribuir outro valor, talvez por isso que seja Value(duh)).
Agradeço a todos que ajudarem![:thumbsup: :thumbsup:](https://forum.imasters.com.br/uploads/emoticons/thumbsup.png)
Compartilhar este post
Link para o post
Compartilhar em outros sites