Vídeo-aulas de persistência objeto-relacional com ORM Framework

O post de hoje é uma cópia de um post que eu já havia publicado no blog antigo, mas como acho que é importante e o pessoal tem gostado bastante, vou publicá-lo de novo.

Em resumo: Trata-se do framework Doctrine ORM php. É um framework que faz o mapeamento objeto-relacional entre aplicações php orientada a objetos e banco de dados relacionais. Ele foi desenvolvido espelhado no grande Hibernate e ajuda muito na organização do código.

São 4 vídeo-aulas. Os arquivos bootstrap e build-models utilizados nas aulas podem ser baixados através dos links a seguir.

bootstrap.txt

build-models.txt

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. Parabens pelo trabalho…
    As video-aulas são excelentes.
    Estou acompanhando a 4º video-aula, mas de qualquer forma, se vc ainda não tenha feito, mostre como pegar valores de DATETIME e valores de IP…
    Por exemplo, nos meus bancos de dados eu sempre crio os campos created, updated e deleted… Pra fazer o controle de arquivos criados em uma data, alterado ou deletado, no caso do deletado, se o valor for null, ele mostra o valor, se tiver algo ele não mostra, (uma condição do meu select getTable… findAll…)…
    Mostra como fazer esse pequeno detalhe, venbho sofrendo com isso…
    Muito obrigado!!!
    Mais uma vez… Parabens…

    1. Olá Ewerton, tudo bem?

      Primeiramente obrigado pela visita no blog e que bom que gostou das video-aulas.

      Com relação à pegar o IP e o Datetime, o php fornece isso de maneira nativa.

      Para pegar o ip: $ip = $_SERVER[“REMOTE_ADDR”];

      Pera pegar o datetime pesquise sobre a função date(). Veja o link http://www.php.net/manual/pt_BR/function.date.php

      Bom, não sei se era isso mesmo que você queria. Se nao for, deixe outro comentário 😉

      Abs

  2. Fala Rafael…
    Dessa forma eu consigo pegar, normalmente…
    Porém, eu preciso gravar essas informações no banco de dados.
    No caso do IP, quando o usuário clicar em gravar, por exemplo, ele pegará o IP e guardará no DB…
    Na própria documentação do doctrine eu vi algo desse tipo:

    $this->hasColumn(‘ip’, string, 25, array(‘ip’ => true));

    Só que não entendi nada de como usar…
    Eu precisaria pegar esse valor…
    Quanto ao Datetime, seria outro problema.

    Bom, eu uso 3 campos nas minhas tabelas para fazer o controle de criação, alteração e delete de um registro. No caso eu não deleto o registro, eu apenas altero o seu status para que não seja visualizado e eu sempre coloco uma condição no select pra isso, no caso, quando eu trabalho com PDO, exemplo da minha query:

    SELECT * FROM users WHERE deleted = NULL;

    No caso do created, updated, deleted eles são do tipo DATETIME, e eles sempre recebem um NOW() na minha query pra alterar alguma informação, por exemplo.
    Com PDO eu faço isso tranquilamente, mas com Doctrine eu estou levando uma surra, pq eu não consigo passar o valor pro DATETIME só do created, ou só do deleted…

    Não sei se consegui ser claro, pq eu tento umas coisas meio de louco… rsrsrs…
    Mas se puder ajudar…

    Um abraço e obrigado por responder!!!

  3. Fala Rafael…
    Vi na sua sexta video-aula uma forma de passar os valores, que seria por hidden do form…

    Vou testar amanhã e qualquer dúvida eu posto aqui…

    Vlws!!!

  4. Primeiramente Parabéns pela ótima aula! Muito boa mesmo, Rafael. (acredito que a única de Doctrine BR).

    Uma dúvida: Como consigo fazer isso tudo na nova versão do Doctrine (2)?

    Na realidade, para mim, só a abstração do banco de dados para ter portabilidade entre MySQL e SQL Server seria fantástico por enquanto. Porém, isso ainda não consegui.

    Se puder esclarecer ou dar o caminho das pedras ficarei eternamente grato, já não sei mais o que faço…rsrs

    Abraço e obrigado!!

    1. Olá Willian,

      Que bom que gostou das vídeo-aulas. Obrigado!

      Com relação ao Doctrine 2, eu não sei quase nada a respeito. Tem muito pouco material em português(apesar de ter um brasileiro efetivamente envolvido no projeto) e trata-se de algo novo.

      Vou dar uma vasculhada e se encontrar algo eu publico aqui.

      Abs

      1. Valeu Rafael!!

        Mas para o problema que citei, vc acha que só o DBAL resolve? Recomendaria 2.0, 2.1?

        O problema mais urgente é de reutilizar consultas SQL únicas, tanto para MySQL como SQL Server (uma das duas).

        Mais uma vez Obrigado!

        1. Olá Willian,

          Acho que para o seu problema, a utilização da classe PDO(PHP Data Objects) já te auxiliaria.

          Conhece PDO?

          Com ela é possível trabalhar com qualquer SGBD apenas alterando a string de conexão.

          Abs

          1. Opa!

            Com ela é possível ter LIMIT, DISTINCT, etc, de uma forma genérica? Faria a emulação para o SQL Server por exemplo sem problemas?

            Estava estudando PDO e ví que na verdade ela não faz essa portabilidade para bancos diferentes. Estou certo?

            Já tenho todo o código escrito para MySQL, mas foi decidido mudar de banco, para SQL Server. Esse é o meu problema… 🙁

            Valeuuu Abraço!!

          2. Através do PDO sim. O SQL fica genérico para qualquer SGBD.

            Como você tem as consultas no MySQL? Com mysql_query?

            Se for, você terá que trocar. 🙂

            Abs

          3. Sim, tudo em mysql_query.

            Gostaria de usar algo assim, para que fosse simulado (se possível) em qualquer outro banco:

            Doctrine_Query::create()
            ->from(“xxxxxxxx”)
            ->addWhere(“data >= NOW()”)
            ->orderBy(“data ASC”)
            ->limit($limite)
            ->execute();

            Saca?

            Valeuuu abraço!

  5. Rafael,

    Parabéns pelo trabalho, suas video-aulas são excelentes de uma simplicidade e com um teor de informação fora do comum. Eu que não sou desenvolvedor WEB estou conseguindo acompanha perfeitamente, mas me deparei com o seguinte erro:

    Warning: require_once(Doctrine/Common/ClassLoader.php) [function.require-once]: failed to open stream: No such file or directory in C:Program FilesZendApache2htdocs____DocTrine____DoctrineORM-2.1.2-fulldoctrine-ormbindoctrine.php on line 20

    Fatal error: require_once() [function.require]: Failed opening required ‘Doctrine/Common/ClassLoader.php’ (include_path=’;’) in C:Program FilesZendApache2htdocs____DocTrine____DoctrineORM-2.1.2-fulldoctrine-ormbindoctrine.php on line 20

    Estou utilizando servidor Web Zend-Server e o NetBeans, que já estava configurado na minha maquina, não foi eu que configurei.

    Por favor me de uma luz.
    Fico no aguardo.

    1. Olá Souto, confira o caminho do diretório do Doctrine. O erro acusa que o arquivo que está sendo incluído não pode ser encontrado. Talvez tenha algum nome que esteja errado.

      Abs

    1. Ola valdir…

      pelo que sei, o doctrine 2 foi totalmente re-implementado e vem com novas funcionalidads que o deixaram ainda mais robusto e profissional.

      ainda nao pesquisei muito a respeito dele, mas parece que esta muito bom.

      ABS.

  6. Olá Rafael.
    Meus parabéns pelas vídeo aulas.
    Suas explicações são muito boas, a forma como você fala também demostra que domina o assunto. São poucas vídeo aulas que possuem a qualidade que as suas apresentaram.
    Meus parabéns

  7. Boa noite Rafael, parabéns pelos vídeos. Muito bem explicado e direto ao ponto.
    Eu também gostaria de utilizar a versão 2.3, já que não consegui a versão 1.2.3 mostrada no vídeo.
    Você teria algum material explicando sobre a utilização do mesmo em sistemas windows?
    Grato,

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *