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

Incluir um novo registro baseado em outra tabela no Eloquent


Frank K Hosaka

Pergunta

No meu projeto PHP eu usei o comando insert into para adicionar um novo registro na tabela tbcontacorrente, baseado na tbdiario. Ele funcionou sem nenhum problema. Já a gramática do Eloquent é bem diferente, ele usa o comando Create, o problema é que não achei nenhum tutorial de como usar o Create tendo como base outra tabela.

A solução que eu encontrei foi o de criar um array da tabela tbdiário e outro array para a tabela tbcontacorrente, e criar um novo registro na gramática do Eloquent baseado na diferença dos arrays. Se alguém tiver uma solução melhor (na gramática do Eloquent), eu aguardo. A minha solução ficou assim (ele funciona, isso não quer dizer que esteja correto):

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\tbcontacorrente;
use App\Models\tbdiario;

class DiarioController extends Controller {

public function pagar(Request $request){
    $doctos=tbdiario::select('docto')->where('contad',130)->orWhere('contad',211)
        ->orWhere('contac',130)->orWhere('contac',211)->get()->toArray();
    $pendencias = tbcontacorrente::select('docto')->get()->toArray();
    $a=[];
    foreach($doctos as $key=>$value){$a[]=$value['docto'];} 
    $b=[];
    foreach($pendencias as $key=>$value){$b[]=$value['docto'];}
    $difs=array_diff($a,$b);
    foreach($difs as $dif){
        tbcontacorrente::create(['docto'=>$dif]);}
}
}

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Acabei de receber uma resposta da Inteligência Artificial do fórum Laracasts, ele sugere eu criar a rotina do acréscimo do registro no módulo Models do Laravel. A solução é interessante, mas o meu inglês é péssimo e eu esqueci de informar no fórum que a tabela tbcontacorrente já tem alguns registros que já foram gravados anteriormente, e se você tentar adicionar o mesmo registro, isso dá certo no PHP, mas no Laravel o programa pára afirmando que você violou a chave primária da tabela. Aqui a resposta do Laracasts:

To add a record from another table using Eloquent, you can use the create method on the model for the table you want to add the record to. Here's an example:

$otherRecord = OtherModel::find($id); // get the record from the other table $newRecord = NewModel::create([ 'field1' => $otherRecord->field1, 'field2' => $otherRecord->field2, // add any other fields you need to populate ]);

In this example, we're getting a record from the OtherModel table using its id, and then creating a new record in the NewModel table using the values from the OtherModel record.

You can modify this example to fit your specific use case. For example, if you want to add a record to tbcontacorrente using values from tbdiario, you could do something like this:

$diarioRecord = tbdiario::find($id); // get the record from tbdiario tbcontacorrente::create([ 'docto' => $diarioRecord->docto, // add any other fields you need to populate ]);

This would create a new record in tbcontacorrente using the docto value from the tbdiario record.

Link para o comentário
Compartilhar em outros sites

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...