Voltando a ver esta aula em 2024, é sem dúvida um dos melhores conteúdos de php right way em PT da internet. Sr.º Leite muito obrigado por compartilhar este rico conhecimento. Abraços
Se vc gerou valor? cara, demais, baita aula, sensacional... Se arrependimento matasse eu já estaria morto e enterrado. Parabéns Robson, mais uma vez, pela excelente aula.
Confesso que estava totalmente afastados dos estudos e completamente desatualizado. Suas aulas estão me motivando a renovar meus projetos! Muito obrigado!
Fala Robson, tudo bom? Só queria passar aqui para elogiar o excelente conteúdo, trabalhar com abstração de instruções agiliza a vida do dev de uma maneira maravilhosa!
Boa noite, aproveitando o gancho na vídeo aula os componentes que chamam a atenção no coffeecode são: o crooper, paginator, router e update. Parabéns Mestre, assisti a primeira aula e gostei muito.
Obrigado Robson! O seu componente DataLayer funcionou com o Firebird. Fiquei quebrando a cabeça para funcionar no Lumen, agora vou usar o PHP puro. Eu vi que tem uma Aula do PHP tips que fala sobre consumo de API, mas se tivesse uma sobre Criar um Servidor com JWT em PHP puro seria Top! Mais uma vez obrigado e sucesso pra vocês.
É bom saber fazer mesmo para aumentar nossas skills , mas na produção , no campo de batalha como diz o robson em que o tempo é dinheiro , isso é uma mão na roda ..
Ótimo video, sempre mantendo a qualidade dos cursos da Upinside. Eu gostaria de aprender sobre componentes que facilitem o trabalho de importação e exportação do banco de dados para arquivos XML e vice versa.
Excelente snack! Umas dos melhores em PHP! Comecei a codar na linguagem no susto. Entrei em uma empresa que todo o legado é em PHP. E to curtindo. Na aula fiquei com uma dúvida absurda! no User.PHP vc declara no construct: parent::__construct("addresses", ["user_id"], "addr_id", false); pq addresses e não address que é o nome da tabela? Obrigado por compartilhar ai conosco essa abstração! Economiza mtas linhas de código.
MUITO BOMM MESTRE. Ensina a usar isso em formulários. Tipo, formulário para cadastrar, formulario para editar, lista para deletar e listar dados . é bom que listar já usa o componente de paginação e mata 2 coelhos com 1 paulada
Aula ótima como sempre. Se alguém teve esse erro ao usar $userItem->data() Fatal error: Uncaught TypeError: Return value of CoffeeCode\DataLayer\DataLayer::data() must be an instance of CoffeeCode\DataLayer\object or null, instance of stdClass returned in . Atualize a versão do PHP
Ótima apresentação. Também faço o curso Full Stack PHP developer, exelente. Só gostaria de uma informação: A exibição do var_dump no meu navegador não sai bem legível igual ao da sua tela, usa algum plugin, qual?
Boa noite, professor! Antes, gostaria de agradecer por compartilhar sua experiência conosco com total paciência. Porem, estou com um probleminha quando salvo os dados, pois estão sendo duplicados a cada atualização (F5). O que posso fazer pra corrigir tal problema?
Eu desisti nesta aula. A primeira grande dificuldade foi a de criar a estrutura das tabelas. Depois tive dúvida de como criar o config. Então desisti. Sugestões: que seja fornecido o esquema do banco. Melhor ainda que seja fornecido o projeto no GitHub.
Ribamar, o config tem que ficar dentro da pasta "source". Você precisa conhecer um pouco sobre banco pra criação das tabelas. Sugiro pegar alguns vídeos sobre MySQL. A tabela que está sendo exemplifica é simples. Assistindo um vídeo você já vai conseguir
@@AildoTorres Obrigado pela sua resposta. Quando aos bancos de dados eu conheço bem mais que um pouco sobre banco de dados. Criei meu esquema, mas acho que é interessante que meu exemplo seja idêntico ao do professor, para evitar problemas desnecessários.
@@ribafs Lgral. Você está usando MySQL? Coloque suas dúvidas aqui. Vamos nos ajudar. Eu estou com problemas na constante do Datalayer, mas estou tentando encontrar o erro. Estou usando SQL Server
@@AildoTorres Estou usando o mysql. E também recebo erro da constante e um monte de outros (estou usando linux e testando o arquivo read.php do vídeo 2): ( ! ) Warning: Use of undefined constant DATA_LAYER_CONFIG - assumed 'DATA_LAYER_CONFIG' (this will throw an Error in a future version of PHP) in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28 Call Stack # Time Memory Function Location 1 0.0001 404840 {main}( ) .../read.php:0 2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7 ( ! ) Warning: Illegal string offset 'driver' in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28 Call Stack # Time Memory Function Location 1 0.0001 404840 {main}( ) .../read.php:0 2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7 ( ! ) Warning: Use of undefined constant DATA_LAYER_CONFIG - assumed 'DATA_LAYER_CONFIG' (this will throw an Error in a future version of PHP) in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28 Call Stack # Time Memory Function Location 1 0.0001 404840 {main}( ) .../read.php:0 2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7 ( ! ) Warning: Illegal string offset 'host' in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28 Call Stack # Time Memory Function Location 1 0.0001 404840 {main}( ) .../read.php:0 2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7 E mais...
Como vai Robson, estou aplicando essa ferramenta em um projecto que estou a desenvolver para uma instituição, no entanto, preciso pegar valores das tabelas relacionadas. tipo um inner join, adoraria saber como fazer usando essa abstração para não ter que misturar as coisas
Muito obrigado, o conteúdo é excelente, porém fiquei com uma dúvida com respeito às condições da consulta. Caso eu precise e um cláusula WHERE complexa como eu faço? Nos exemplos da documentação não vi. Desde já agradeço sua resposta.
Show de bola Robson!! Me ocorreu uma dúvida em relação ao tratamento das PDOExceptions. Estou forçando o delete de uma linha no banco de dados que possuí chave estrangeira na outra tabela. Ou seja, a camada BD não irá permitir tal operação. E por sua vez não irá realizar o comando executado pela aplicação. O método destroy possuí somente um retorno boelano, não prevendo a captura de exceções lançadas pela camada do banco de dados. Como faremos neste caso para que a aplicação receba as mensagens enviadas do banco ao tentar realizar essa operação (no caso, delete a parent row foreign key constraint fails)?
Cara, cria um vídeo falando sobre Kafka no uso do PHP no contexto de Microsserviços.. Acho que uma ideia legal é criar duas ou mais aplicações dockerizadas, que se comunicam através do kafka..
Muito bom! Seria interessante implementar um método parecido com o do Eloquent, o Soft Deleting, que tem o atributo deleted_at, assim evitaria de ficar excluindo dados do banco, somente quando necessário.
Oi. Sou iniciante em php. Sobre essas e outras bibliotecas php que instala com o composer para desenvolver um projeto. Quando eu for colocar o projeto online no servidor de hospedagem: Eu tenho que subir todas as bibliotecas ou são usadas somente para desenvolvimento local? Vi alguns vídeos na internet falando sobre bibliotecas php mas não vi nenhum falando em como hospedar corretamente um projeto desenvolvido usando o composer e várias bibliotecas.
Boa tarde, estou acompanhando as aula e resolvida codificar junto, estou tendo problemas: meu php está na versão 7.3; ao acessara url do projeto é exibido o seguinte erro: Parse error: syntax error, unexpected '?' in /var/www/html/PHP_TIPS/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 23 Desde já agradeço a iniciativa, as explicações são claras e por este motivo quero acompanhar a série.
Saudações Mister Robson, muito obrigado. Falo a partir de Angola! No processo de save dos dados de address, encontrei uma duvida penso que e duvida de muitos também. Quando os dados de users são gravados no banco de dados, ele retorna um dado do tipo boolean, quando tivermos que salvar os dados de address, precisaremos do users_id, o que não temos porque o save users não retorna o ultimo id gravado em tabela users. Essa e a duvida que encontrei, Grande abraço, estou a aprender muito meu Mano.
Os arquivos Read.php, Create.php, update.php, delete.php dentro de uma arquitetura MVC eles estariam no controller ou no Model, Retornando os dados para view? Pois antes de ver o dataLayer, eu fazia as query sql no MODEL dentro de um método e chamava eles no controller, porém, quando fui estudar o Laravel, devido a abstração do eloquent e do active records basicamente nós só "seta" a propriedade no controller e chama o método de save(), update() , find() e etc, e retorna para view.
Como eu faria em caso de relacionamento muitos para muitos, exemplo alunos e cursos, um aluno pode participar de vários cursos, e um curso pode ter vários alunos. Neste caso eu teria que criar uma tabela intermediaria aluno_curso. Mas e na criação das classes? Eu teria que criar uma terceira classe chamada aluno_curso? Ou tem alguma forma melhor de fazer esse relacionamento?
Muito bom Robson, mês que vem vou fazer seu curso fsphp. Cara fico muito na dúvida em usar esses componentes, pois uso o zend framework + Doctrine. Eu estaria andando pra trás????
Olá! Dando oppinião para os componentes, no caso eu trabalho com desenvolvimento de dasshboards administrativos e de produção de projetos. Gosto de componentes para possibilitar monitoramento de usabilidade, envio automatizados de mensagens, Contador de visitas, históricos de navegações, quantos estão online ou atualizaram tal pasta, arquivo, etc..; optimização de gráficos e conversão de valores decimais, float, moedas, porcentagens. è só pensar em dashboards que seria miha dica.
Muito bom! so ficou uma dúvida. Num login por exemplo, onde quero verificar se o e-mail e a senha conferem, é possível buscar com o find? Ou só aceita um parâmetro?
Bom dia... Parabéns pelos vídeos Robson, muito bem explicado. Uma dúvida: O datalayer funciona com o SQL Server? E qual a extensão do Chrome para deixar o debug organizado?
Fala Robson, excelentes dicas, estou aprendendo muito, Parabéns!!!! estou no arquivo create.php e o metodo save() noa esta funcionando, no var_dump o index statement está como NULL consequentimente nao esta salvando na tabela, conferi varias vezes os codigos estao iguais aos da aula, alguma dica? Obs.: estou aos 24:59 do video.
Boa tarde, excelente aula, muito bem explicado. Parabéns!!! Poderia me dar uma ajuda, está dando erro: Warning: Use of undefined constant DATA_LAYER_CONFIG - assumed 'DATA_LAYER_CONFIG' (this will throw an Error in a future version of PHP) in D:\xampp\htdocs\estudo-composer\ep02\vendor\coffeecode\datalayer\src\Connect.php on line 28 Warning: Illegal string offset 'driver' in D:\xampp\htdocs\estudo-composer\ep02\vendor\coffeecode\datalayer\src\Connect.php on line 28
Já descobri a causa, no arquivo composer .json o o arquivo config.php não estava sendo executado no autoload, pequeno detalhe ... Bora continuar ... Parabéns...
Fala Robson, tudo bom? Tou penando pra fazer xdebug funcionar no OSX Mojave. Parece que ele tem alguns problemas com o XAMPP e não estou conseguindo assinar o controlador depois do make. Em muitos lugares falam pra desinstalar completamente o PHP, e desabilitar o PHP do OSX. E depois instalar o homebrew. Como é a config do seu php e do banco de dados? Como você usa o xdebug? Faz um vídeo sobre isso por favor. Um grande abraço e muito obrigado!
1) Para os alunos do FSPHP convém utilizarmos o DataLayer ou permanecemos com o Model default? 2) As colunas requireds são somente para o create certo? Pois no update não se fez necessário informar o last_name que é required 3) Cadê a Rock Band?
Robson, mas é incorreto eu fazer um INNER JOIN usando DataLayer ? Nos casos que não vou usar um foreach, ou existe outra forma sem usar INNER JOIN e foreach ?
Cara... pelo que eu vi no vídeo, no caso do Inner Join, ou seja, juntar duas tabelas, você tem que fazer igual ele faz com o Addresses aos 21:49 min do vídeo, sacou? Acredito que seja isso! Estava com a mesma dúvida, então, dando uma mão aqui! Abraço
5 лет назад+1
Bom dia, aqui no meu netbeans, ao fazer o update para instalar o componente, mostra que eu preciso atualizar o netbeans para a versão 7.2 para poder usar o componente, como faço? Preciso atualizar o netbeans ou xamp?
Fiquei com uma dúvida: Mesmo sem fazer a declaração das propriedades em uma classe como esta sendo possível trazer informações do objeto da seguinte forma $this->"nome da propriedade" ?
Olá! Robson. Tenho assistido todos os seus vídeos do PHPTips. Surgiu-me a dúvida de como posso configurar e acessar dois databases diferentes, com tabelas diferentes usando o DataLayer. Pelo que vi só posso usar um só DATA_LAYER_CONFIG. É isso mesmo ou tenho outra opção? Eu usaria um DATA_LAYER_CONFIG e outro DATA_LAYER_CONFIG2. Isto é possível com o componente DataLayer que você criou ou não? Grato pela atenção.
Olá, boa tarde! Acredito que eu esteja fazendo alguma coisa errada, mas vamos lá! O meu cenário: Tenho uma tabela de "cliente"(id,nome,telefone) e outra tabela de "endereco" (id,logradouro,bairro,cidade). No meu teste faço o seguinte: executo a rotina de salvar do "cliente", e retorna o "id" perfeitamente, mas quando pego esse "id" que retornou para inserir na tabela de "endereco" o componente entende que estou fazendo um update e da um erro. Quando utilizo a abordagem de um pra muitos funciona muito bem, mas quando estou utilizando um pra um, que é o caso do exemplo apresenta esse erro. Como faço para utilizar essa abordagem e realizando um CRUD ? Fico grato desde já.
Robson, show de bola... mas eu caí em um ponto pelo DataLayer que quando eu tenho uma ligação Many-to-Many do tipo ( usuário -> usuariogrupos -> grupo ) como que eu trato essa ligação aí?
Olá. Boa tarde, você saberia dizer como configurar o Netbeans para automatizar a importação dos namespaces? pesquisei bastante sobre e não consegui descobrir..
Olá Robson, bem, eu tenho uma classe de configuração em meu projeto, e ao invés de usar as configurações do datalayer com o define()* eu usei com o const = [ ]* porém ocorreu um erro, como eu mostrei no comentário anterior a esse, porque isso ocorre?
Robson, estou me atualizando aqui, após 20 anos estou mega defasada =/... mas eu queria ver para tratar eventos (event driven). Preciso fazer uma aplicação que trata um volume de dados grande de forma assíncrona. Queria fazer com PHP =) . Obrigada
Olá, eu tenho uma dúvida sobre o DataLayer. Como eu passo mais de um filtro no campo find()? $user = $model->find("first_name = :name", "name=Robson")->fetch();
bom fui bem com o modelo da aula amanha vou tentar fazer sozinho e com os bancos que eu já tenho e tentar cria um certo dinamismo na parada tentar pegar o id do usuário dentro de um formulário para edita lo entende quem sabe ate amanha !tmj sempre mais ainda tenho a duvida devo cria uma coluna nas minhas tabelas created_at/updated_at ou apenas faço como o Robson fez deixo false ?
Voltando a ver esta aula em 2024, é sem dúvida um dos melhores conteúdos de php right way em PT da internet. Sr.º Leite muito obrigado por compartilhar este rico conhecimento. Abraços
Se vc gerou valor? cara, demais, baita aula, sensacional... Se arrependimento matasse eu já estaria morto e enterrado. Parabéns Robson, mais uma vez, pela excelente aula.
Confesso que estava totalmente afastados dos estudos e completamente desatualizado.
Suas aulas estão me motivando a renovar meus projetos!
Muito obrigado!
Fala Robson, tudo bom? Só queria passar aqui para elogiar o excelente conteúdo, trabalhar com abstração de instruções agiliza a vida do dev de uma maneira maravilhosa!
Agradecer a esse cara é muito pouco, seu seu aluno da Up e ganhei muito com isso. Um time muito forte e de auto nível. Parabéns Rob.
Boa noite, aproveitando o gancho na vídeo aula os componentes que chamam a atenção no coffeecode são: o crooper, paginator, router e update. Parabéns Mestre, assisti a primeira aula e gostei muito.
up 2023 muito obrigado pelo serviço prestado
Ai Galera quem tiver com dúvida das tabelas. Segue abaixo um modelo :D
CREATE DATABASE phptips002;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`genre` varchar(10) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `address` (
`addr_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`street` varchar(255) NOT NULL,
`number` varchar(255) NOT NULL,
PRIMARY KEY (`addr_id`),
KEY `address_users_id_fk` (`user_id`),
CONSTRAINT `address_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
Muito útil, eu tava me complicando com isso. Obrigado!
quebrou um galho
vlw
Valeu!
Muito obrigadaa!!!
Meu código em PHP era uma várzea eu usava nem namespaces ainda bem que encontrei esse canal me poupou de passar vergonha na entrevista
C loko... eu estou muito atrás... Valeu Robson! Aula (DD) Dinâmica e Didática !! Abração!
Para variar .... excelente vídeo ... aprendendo MUITO !!! Um detalhe ..... como faço para configurar e mostrar da forma com que saiu o seu??? o meu está assim ..... array(3) { [0]=> object(stdClass)#4 (6) { ["id"]=> string(1) "1" ["first_name"]=> string(6) "Robson" ["last_name"]=> string(5) "Leite" ["genre"]=> string(1) "M" ["created_at"]=> string(19) "2019-06-12 21:00:00" ["update_at"]=> string(19) "2019-06-12 21:00:00" } [1]=> object(stdClass)#5 (6) { ["id"]=> string(1) "2" ["first_name"]=> string(3) "Gah" ["last_name"]=> string(7) "Mirandi" ["genre"]=> string(1) "F" ["created_at"]=> string(19) "2019-06-12 21:00:00" ["update_at"]=> string(19) "2019-06-12 21:00:00" } [2]=> object(stdClass)#6 (6) { ["id"]=> string(1) "3" ["first_name"]=> string(7) "Marcelo" ["last_name"]=> string(8) "Carvalho" ["genre"]=> string(1) "M" ["created_at"]=> string(19) "2021-12-13 21:01:18" ["update_at"]=> string(19) "2021-12-13 21:01:18" } }
Eu já dou like antes de assistir o vídeo desse cara, fantástico!!!
Excelente vídeo sobre o assunto da Abstração de Banco de Dados com Data Layer | PHP Tips #002, muito TOP!
Obrigado Robson!
O seu componente DataLayer funcionou com o Firebird.
Fiquei quebrando a cabeça para funcionar no Lumen, agora vou usar o PHP puro.
Eu vi que tem uma Aula do PHP tips que fala sobre consumo de API, mas se tivesse uma sobre Criar um Servidor com JWT em PHP puro seria Top!
Mais uma vez obrigado e sucesso pra vocês.
Show de mais esse componente. Com esse conteúdo fica fácil aprender a usar.
Excelente conteúdo, pacotes muito bons disponíveis, já estou usando o DataLayer e o Router no meu projeto, parabéns!
Mano, muito bom seu conteúdo, praticas modernas e bem feitas, sem aquelas coisas arcaicas e duras de trabalhar. Parabens
E bom sabermos fazer isso tudo na mão, mas essas bibliotecas são de muita ajuda!!
É bom saber fazer mesmo para aumentar nossas skills , mas na produção , no campo de batalha como diz o robson em que o tempo é dinheiro , isso é uma mão na roda ..
Vamos dar Like em todo canal, porque os caras compartilham conteúdo TOP10+ ehhehehehe vamos vamos vamos like like like.......
Parabens Robson! Conteúdo muito empolgante e didática impecável. Muito obrigado por compartilhar seus conhecimentos.
Parabéns Robson! Agregou muito valor!
muito boa a aula, professor detalha e ensina até como entender a documentação. Show!
Fiquei sem palavras Tudo muito Simplificado Continua ajudar-nos
Sensacional Robson, vou fazer o curso Full Stack PHP Developer com certeza, quero dominar essas tecnologias o quanto antes
Ótimo video, sempre mantendo a qualidade dos cursos da Upinside. Eu gostaria de aprender sobre componentes que facilitem o trabalho de importação e exportação do banco de dados para arquivos XML e vice versa.
fazendo assim poupa tempo demais!!! muito bom!!!!!!
Parabéns novamente, conteúdo rico de informações. Abriu minha mente.
Como alguém pode dar deslike num conteúdo desse?
É o ódio no coração do ser humano que está cada vez maior, tem gente que se incomoda apenas com o sucesso do outro.
Meu Deus é o Guanabara 2.0. Que qualidade mano!
#RaizUp. Sensacional o conteúdo, a cada aula um upgrade de conhecimento no padrão UP.
Virou meu livro de consulta, parabéns.
Adorei! Conteúdo muito importante e que com certeza vou implementar no meu projeto.
Já vi que o que eu sei de Php até agora só representa 0,5% kk estou a anos luz de aprender tudo. Obrigado Robson pelo excelente conteúdo.
Excelente snack! Umas dos melhores em PHP!
Comecei a codar na linguagem no susto. Entrei em uma empresa que todo o legado é em PHP. E to curtindo.
Na aula fiquei com uma dúvida absurda!
no User.PHP vc declara no construct:
parent::__construct("addresses", ["user_id"], "addr_id", false);
pq addresses e não address que é o nome da tabela?
Obrigado por compartilhar ai conosco essa abstração! Economiza mtas linhas de código.
MUITO BOMM MESTRE.
Ensina a usar isso em formulários.
Tipo, formulário para cadastrar, formulario para editar, lista para deletar e listar dados .
é bom que listar já usa o componente de paginação e mata 2 coelhos com 1 paulada
Encontrar conteúdo gratuito de acordo com PhP Moderno, Gratidão Robson
Aula ótima como sempre. Se alguém teve esse erro ao usar $userItem->data() Fatal error: Uncaught TypeError: Return value of CoffeeCode\DataLayer\DataLayer::data() must be an instance of CoffeeCode\DataLayer\object or null, instance of stdClass returned in . Atualize a versão do PHP
Muito Top V. Leite !!!
Cara que curso show, parabéns
MUITOOO OBRIGADO , ESSE CONTEÚDO ESTÁ ME AJUDANDO MUITO
Ótima apresentação. Também faço o curso Full Stack PHP developer, exelente. Só gostaria de uma informação: A exibição do var_dump no meu navegador não sai bem legível igual ao da sua tela, usa algum plugin, qual?
olha la no devtools a instalação do Xdebug
Boa noite, professor! Antes, gostaria de agradecer por compartilhar sua experiência conosco com total paciência. Porem, estou com um probleminha quando salvo os dados, pois estão sendo duplicados a cada atualização (F5). O que posso fazer pra corrigir tal problema?
estou com o mesmo problema! ALguém?
farei novamente a aula criarei uma estrutura igual e tentarei tudo de novo afinal nao custa nada refazer para aprender mais
Aula top padrão up e componente mais top e padrão up!!!
Valeu... Mais um ótimo conteúdo.... partiu ep03..
Aula sensacional mestre, está de parabéns #phptips
Eu desisti nesta aula. A primeira grande dificuldade foi a de criar a estrutura das tabelas.
Depois tive dúvida de como criar o config. Então desisti.
Sugestões: que seja fornecido o esquema do banco.
Melhor ainda que seja fornecido o projeto no GitHub.
Ribamar, o config tem que ficar dentro da pasta "source". Você precisa conhecer um pouco sobre banco pra criação das tabelas. Sugiro pegar alguns vídeos sobre MySQL. A tabela que está sendo exemplifica é simples. Assistindo um vídeo você já vai conseguir
@@AildoTorres Obrigado pela sua resposta. Quando aos bancos de dados eu conheço bem mais que um pouco sobre banco de dados. Criei meu esquema, mas acho que é interessante que meu exemplo seja idêntico ao do professor, para evitar problemas desnecessários.
@@ribafs Lgral. Você está usando MySQL? Coloque suas dúvidas aqui. Vamos nos ajudar. Eu estou com problemas na constante do Datalayer, mas estou tentando encontrar o erro. Estou usando SQL Server
@@AildoTorres Estou usando o mysql.
E também recebo erro da constante e um monte de outros (estou usando linux e testando o arquivo read.php do vídeo 2):
( ! ) Warning: Use of undefined constant DATA_LAYER_CONFIG - assumed 'DATA_LAYER_CONFIG' (this will throw an Error in a future version of PHP) in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28
Call Stack
# Time Memory Function Location
1 0.0001 404840 {main}( ) .../read.php:0
2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7
( ! ) Warning: Illegal string offset 'driver' in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28
Call Stack
# Time Memory Function Location
1 0.0001 404840 {main}( ) .../read.php:0
2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7
( ! ) Warning: Use of undefined constant DATA_LAYER_CONFIG - assumed 'DATA_LAYER_CONFIG' (this will throw an Error in a future version of PHP) in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28
Call Stack
# Time Memory Function Location
1 0.0001 404840 {main}( ) .../read.php:0
2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7
( ! ) Warning: Illegal string offset 'host' in /var/www/html/phptips/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 28
Call Stack
# Time Memory Function Location
1 0.0001 404840 {main}( ) .../read.php:0
2 0.0025 411936 CoffeeCode\DataLayer\Connect::getInstance( ) .../read.php:7
E mais...
Sim, gerou muito valor. Com certeza
Excelente aula, como eu utilizo esse data layer para fazer um inner Join de 3 tabelas ? Poderia passar a query de exemplo
Estou com o mesmo problema, resolvi usando query mesmo, mas queria deixar do jeito certo usando a datalayer. Como vc resolveu?
Muito foda! Parabéns, jovem.
Muito Obrigado ! Master Robson.
Como vai Robson, estou aplicando essa ferramenta em um projecto que estou a desenvolver para uma instituição, no entanto, preciso pegar valores das tabelas relacionadas. tipo um inner join, adoraria saber como fazer usando essa abstração para não ter que misturar as coisas
Estou com o mesmo problema, resolvi na gambirra usando a query, mas queria fazer do jeito certo. Como vc fez pra resolver isso?
Muito obrigado, o conteúdo é excelente, porém fiquei com uma dúvida com respeito às condições da consulta. Caso eu precise e um cláusula WHERE complexa como eu faço? Nos exemplos da documentação não vi. Desde já agradeço sua resposta.
@@robsonvleite Obrigado vou tentar aqui! Rsrs.
Também queria saber, queria fazer um where com 2 parametros de consulta
Show de bola Robson!!
Me ocorreu uma dúvida em relação ao tratamento das PDOExceptions. Estou forçando o delete de uma linha no banco de dados que possuí chave estrangeira na outra tabela. Ou seja, a camada BD não irá permitir tal operação. E por sua vez não irá realizar o comando executado pela aplicação.
O método destroy possuí somente um retorno boelano, não prevendo a captura de exceções lançadas pela camada do banco de dados. Como faremos neste caso para que a aplicação receba as mensagens enviadas do banco ao tentar realizar essa operação (no caso, delete a parent row foreign key constraint fails)?
Show Robson, parabéns
Cara, cria um vídeo falando sobre Kafka no uso do PHP no contexto de Microsserviços.. Acho que uma ideia legal é criar duas ou mais aplicações dockerizadas, que se comunicam através do kafka..
Muito bom! Seria interessante implementar um método parecido com o do Eloquent, o Soft Deleting, que tem o atributo deleted_at, assim evitaria de ficar excluindo dados do banco, somente quando necessário.
Oi. Sou iniciante em php.
Sobre essas e outras bibliotecas php que instala com o composer para desenvolver um projeto.
Quando eu for colocar o projeto online no servidor de hospedagem:
Eu tenho que subir todas as bibliotecas ou são usadas somente para desenvolvimento local?
Vi alguns vídeos na internet falando sobre bibliotecas php mas não vi nenhum falando em como hospedar corretamente um projeto desenvolvido usando o composer e várias bibliotecas.
Boa tarde, estou acompanhando as aula e resolvida codificar junto, estou tendo problemas:
meu php está na versão 7.3;
ao acessara url do projeto é exibido o seguinte erro: Parse error: syntax error, unexpected '?' in /var/www/html/PHP_TIPS/ep02/vendor/coffeecode/datalayer/src/Connect.php on line 23
Desde já agradeço a iniciativa, as explicações são claras e por este motivo quero acompanhar a série.
David Luis da Silva conseguiu?
Saudações Mister Robson, muito obrigado. Falo a partir de Angola! No processo de save dos dados de address, encontrei uma duvida penso que e duvida de muitos também. Quando os dados de users são gravados no banco de dados, ele retorna um dado do tipo boolean, quando tivermos que salvar os dados de address, precisaremos do users_id, o que não temos porque o save users não retorna o ultimo id gravado em tabela users. Essa e a duvida que encontrei, Grande abraço, estou a aprender muito meu Mano.
Os arquivos Read.php, Create.php, update.php, delete.php dentro de uma arquitetura MVC eles estariam no controller ou no Model, Retornando os dados para view? Pois antes de ver o dataLayer, eu fazia as query sql no MODEL dentro de um método e chamava eles no controller, porém, quando fui estudar o Laravel, devido a abstração do eloquent e do active records basicamente nós só "seta" a propriedade no controller e chama o método de save(), update() , find() e etc, e retorna para view.
Como eu faria em caso de relacionamento muitos para muitos, exemplo alunos e cursos, um aluno pode participar de vários cursos, e um curso pode ter vários alunos. Neste caso eu teria que criar uma tabela intermediaria aluno_curso.
Mas e na criação das classes? Eu teria que criar uma terceira classe chamada aluno_curso? Ou tem alguma forma melhor de fazer esse relacionamento?
Dentro do curso é assim? Tem vídeos extras e tira dúvidas? Pq essa série PHP Tips é muito boa...
O curso é assim mesmo. Esse cara é fera!
Muito bom Robson, mês que vem vou fazer seu curso fsphp. Cara fico muito na dúvida em usar esses componentes, pois uso o zend framework + Doctrine. Eu estaria andando pra trás????
Olá! Dando oppinião para os componentes, no caso eu trabalho com desenvolvimento de dasshboards administrativos e de produção de projetos. Gosto de componentes para possibilitar monitoramento de usabilidade, envio automatizados de mensagens, Contador de visitas, históricos de navegações, quantos estão online ou atualizaram tal pasta, arquivo, etc..; optimização de gráficos e conversão de valores decimais, float, moedas, porcentagens. è só pensar em dashboards que seria miha dica.
Olá Robson, gostaria de ver no coffeecode/paginator e router, se for possível.
Próximo componente pode o componente de uploader, queria ver vocês da upinside modelaram essa função
Professor, só uma pergunta! como eu faria por exemplo para disponibilizar esses dados em forma de Rest Api ou seja transforma esse exemplo em uma api.
Muito bom! so ficou uma dúvida. Num login por exemplo, onde quero verificar se o e-mail e a senha conferem, é possível buscar com o find? Ou só aceita um parâmetro?
Bom dia...
Parabéns pelos vídeos Robson, muito bem explicado.
Uma dúvida: O datalayer funciona com o SQL Server? E qual a extensão do Chrome para deixar o debug organizado?
Fala Robson, excelentes dicas, estou aprendendo muito, Parabéns!!!! estou no arquivo create.php e o metodo save() noa esta funcionando, no var_dump o index statement está como NULL consequentimente nao esta salvando na tabela, conferi varias vezes os codigos estao iguais aos da aula, alguma dica? Obs.: estou aos 24:59 do video.
Anderson Soares de um var dump na user->save() e olha o erro
tive esse problema. era os nomes das colunas que estavam diferentes. corrigindo vai funcionar
Boa tarde, excelente aula, muito bem explicado. Parabéns!!!
Poderia me dar uma ajuda, está dando erro:
Warning: Use of undefined constant DATA_LAYER_CONFIG - assumed 'DATA_LAYER_CONFIG' (this will throw an Error in a future version of PHP) in D:\xampp\htdocs\estudo-composer\ep02\vendor\coffeecode\datalayer\src\Connect.php on line 28
Warning: Illegal string offset 'driver' in D:\xampp\htdocs\estudo-composer\ep02\vendor\coffeecode\datalayer\src\Connect.php on line 28
Já descobri a causa, no arquivo composer .json o o arquivo config.php não estava sendo executado no autoload, pequeno detalhe ... Bora continuar ... Parabéns...
Fala Robson, tudo bom?
Tou penando pra fazer xdebug funcionar no OSX Mojave.
Parece que ele tem alguns problemas com o XAMPP e não estou conseguindo assinar o controlador depois do make.
Em muitos lugares falam pra desinstalar completamente o PHP, e desabilitar o PHP do OSX. E depois instalar o homebrew.
Como é a config do seu php e do banco de dados? Como você usa o xdebug? Faz um vídeo sobre isso por favor.
Um grande abraço e muito obrigado!
1) Para os alunos do FSPHP convém utilizarmos o DataLayer ou permanecemos com o Model default?
2) As colunas requireds são somente para o create certo? Pois no update não se fez necessário informar o last_name que é required
3) Cadê a Rock Band?
Robson, mas é incorreto eu fazer um INNER JOIN usando DataLayer ? Nos casos que não vou usar um foreach, ou existe outra forma sem usar INNER JOIN e foreach ?
Cara... pelo que eu vi no vídeo, no caso do Inner Join, ou seja, juntar duas tabelas, você tem que fazer igual ele faz com o Addresses aos 21:49 min do vídeo, sacou? Acredito que seja isso! Estava com a mesma dúvida, então, dando uma mão aqui! Abraço
Bom dia, aqui no meu netbeans, ao fazer o update para instalar o componente, mostra que eu preciso atualizar o netbeans para a versão 7.2 para poder usar o componente, como faço? Preciso atualizar o netbeans ou xamp?
Robson conteúdo excelente, gostaria de saber se você possui algum curso focado especialmente em banco de dados valeu
@@robsonvleite beleza Mestre, se não for pedir muito tem como me enviar o link
Sim, tem o Maria DB www.upinside.com.br/cursos/mariadb-essentials
Eu amo esse som de teclas de notebook, como vocês capturam?
Fiquei com uma dúvida: Mesmo sem fazer a declaração das propriedades em uma classe como esta sendo possível trazer informações do objeto da seguinte forma $this->"nome da propriedade" ?
Gostaria de ver como fazer logn com api php e no modelo mvc please, ate agora nao tem melhor para ensinar, parabens.
Olá! Robson. Tenho assistido todos os seus vídeos do PHPTips. Surgiu-me a dúvida de como posso configurar e acessar dois databases diferentes, com tabelas diferentes usando o DataLayer. Pelo que vi só posso usar um só DATA_LAYER_CONFIG. É isso mesmo ou tenho outra opção? Eu usaria um DATA_LAYER_CONFIG e outro DATA_LAYER_CONFIG2. Isto é possível com o componente DataLayer que você criou ou não? Grato pela atenção.
Olá, boa tarde!
Acredito que eu esteja fazendo alguma coisa errada, mas vamos lá!
O meu cenário: Tenho uma tabela de "cliente"(id,nome,telefone) e outra tabela de "endereco" (id,logradouro,bairro,cidade).
No meu teste faço o seguinte: executo a rotina de salvar do "cliente", e retorna o "id" perfeitamente, mas quando pego esse "id" que retornou para inserir na tabela de "endereco" o componente entende que estou fazendo um update e da um erro.
Quando utilizo a abordagem de um pra muitos funciona muito bem, mas quando estou utilizando um pra um, que é o caso do exemplo apresenta esse erro.
Como faço para utilizar essa abordagem e realizando um CRUD ? Fico grato desde já.
#tmj , #RaizUP, #boraProgramar. Show. curtido e compartilhado.
Boa noite,
queria uma ajuda, estou utilizando o componente Datalayer na verssão atual e o mesmo encontra-se com um erro no código no método findById
Auto Top, parabéns!
Robson, show de bola... mas eu caí em um ponto pelo DataLayer que quando eu tenho uma ligação Many-to-Many do tipo ( usuário -> usuariogrupos -> grupo ) como que eu trato essa ligação aí?
Olá. Boa tarde, você saberia dizer como configurar o Netbeans para automatizar a importação dos namespaces? pesquisei bastante sobre e não consegui descobrir..
Você recomenda o uso do Adodb?
A estrutura das nossas tabelas tem que ser como a do seu exemplo ? pq eu nao consegui cadastra aki nao
Olá Robson, bem, eu tenho uma classe de configuração em meu projeto, e ao invés de usar as configurações do datalayer com o define()* eu usei com o const = [ ]* porém ocorreu um erro, como eu mostrei no comentário anterior a esse, porque isso ocorre?
Robson, estou me atualizando aqui, após 20 anos estou mega defasada =/... mas eu queria ver para tratar eventos (event driven). Preciso fazer uma aplicação que trata um volume de dados grande de forma assíncrona. Queria fazer com PHP =) . Obrigada
Muito obrigado!
Assisti atrasado, mas valeu pato preto na área .
Olá, eu tenho uma dúvida sobre o DataLayer. Como eu passo mais de um filtro no campo find()?
$user = $model->find("first_name = :name", "name=Robson")->fetch();
fazer um exemplo usando tabelas que relacionam entre si.
Alguns termos eu acho um pouco complexo para quem esta iniciando ou ate mesmo se atualizando... por exemplo, pdostantment (o que é)?
bom fui bem com o modelo da aula amanha vou tentar fazer sozinho e com os bancos que eu já tenho e tentar cria um certo dinamismo na parada tentar pegar o id do usuário dentro de um formulário para edita lo entende quem sabe ate amanha !tmj sempre mais ainda tenho a duvida devo cria uma coluna nas minhas tabelas created_at/updated_at ou apenas faço como o Robson fez deixo false ?
muito bom, so agora consegui fazer o código antes só vi o video.
Boa noite Robson
Tem algum exemplo de conexão com Firebird?
conseguiu alguma coisa? - estou em busca também!
Só não estou conseguindo fazer a questão o "join", existe algum local com mais exemplos dessa implementação?
Estou com o mesmo problema, resolvi usando query mesmo, mas queria deixar do jeito certo. Como vc resolveu?