Esses dias me deparei com a necessidade de produzir um formulário cujos campos não são produto de uma tabela única mas sim de um left join.
Para uma tabela única, o comando é o seguinte
~/www/YeAPF/tools/ydbcreateform --db 192.168.56.250:nossoConsultorio_teste --user esteban --pass senha --type mysqli --table clinicas --name "clinicas"
Ai modifiquei o ydbcreateform para que funcionasse com um comando sql. Neste caso a sintaxe fica assim:
~/www/YeAPF/tools/ydbcreateform --db 192.168.56.250:nossoConsultorio_teste --user esteban --pass senha --type mysqli --sql "select c.id, c.email, c.data_alteracao, c.status_clinica, c.pessoa_juridica, c.CNES, c.DDD, c.telefone, c.DDD_cel, c.telefone_cel, pj.CNPJ, pj.nome_fantasia, pj.razao_social, pj.tipo_logradouro, pj.endereco, pj.numero, pj.complemento, pj.cidade, pj.UF, pj.CNAE from clinicas c left join pessoas_juridicas pj on pj.id = c.pessoa_juridica" --name "clinicas"
Para salvar os dados, o programador precisa modificar o código produzido. Mas o restante, já está pronto.
Ele produz os mesmos arquivos: clinicas.php, clinicas.json, clinicas.form f_clinicas.html e js/clinicas.js
O programador não precisa usar todos eles.
Por exemplo, f_clinicas.html e clinicas.json são mutuamente excludentes. Ao passo que clinicas.json funciona junto com js/clinicas.js e o interface.js (que ainda não foi incluso na distribuição).
Assim, gerando uma boa tabela no seu banco (ou uma view, por exemplo) o CRUD está praticamente pronto.