Ontem eu usei o método Find do Laravel pela primeira vez, e eu gostei muito dele, e só agora é que eu consigo enxergar a diferença entre o PHP e o Laravel.
Para saber a descrição de um produto, a gramática do MySQL é Select produto from tabela_produto where codigo = @codigo.
A gramática do PHP é assim $query=$mysqli->query("select produto from tabela_produto where codigo = $codigo");
E a gramática do Laravel é assim $produto=tabela_produto::where('codigo',$codigo)->value('produto');
O problema dessa gramática é que ele sempre precisa estar conectado no banco de dados.
Tanto o PHP quanto o Laravel são capazes de jogar toda a tabela de produtos no terminal do cliente. A pergunta é: como o cliente vai consultar a tabela?
No caso do PHP, o desenvolvedor vai precisar da tecnologia do JavaScript.
Mas o Laravel já tem uma gramática mais robusta, olha só que bacana:
Model
class tbprod extends Model{
use HasFactory;
protected $table="tbprod";
protected $fillable=['prod','custo','codforn','marg','loc','emb','cf','codbar'];
protected $primaryKey="codprod";
public function vinculados(){return $this->hasMany(tbprod::class,'codforn','codforn');}}
Controller
Public Function inicio(Request $request){
$produtos=tbprod::all();
$vinculados=tbprod::with('vinculados')->where('codforn','like','{%')->orderBy('prod')->get();
return view('multiplo',compact('produtos','vinculados')); }
Blade
<tableclass="table table-striped">
@foreach($vinculados as $vinc)
<tr><td>Produto Principal<td>{{$produtos->find(json_decode($vinc->codforn)->cod)->prod}}
<tr><td>Produto Vinculado<td>{{$vinc->prod}}
@endforeach
</table>
Eu adaptei o meu código baseado numa sugestão do Lary do Laracasts, mas ele apagou a sugestão, e assim não sei se é necessário a "relação" vinculados que foi definido no Model. O importante é o arquivo blade, onde usei pela primeira vez o método find. A tabela produto tem o campo codforn, por exemplo, "banana dúzia", codprod=15, codforn=1234. Depois eu criei o produto "banana peça", codprod=16, codforn='{"cod":15,"conv":12}'.
A banana peça está amarrado com o código 15. Para saber quem era o código 15, eu forçava o Blade a conectar com o banco de dados assim
{{app\models\tbprod::where('codprod',$codprod)->value('prod')}} e essa conexão era repetida tantas vezes para quantos produtos vinculados houvesse. Já o find faz o mesmo serviço, mas sem precisar de nenhuma conexão.
Pergunta
Frank K Hosaka
Ontem eu usei o método Find do Laravel pela primeira vez, e eu gostei muito dele, e só agora é que eu consigo enxergar a diferença entre o PHP e o Laravel.
Para saber a descrição de um produto, a gramática do MySQL é Select produto from tabela_produto where codigo = @codigo.
A gramática do PHP é assim $query=$mysqli->query("select produto from tabela_produto where codigo = $codigo");
E a gramática do Laravel é assim $produto=tabela_produto::where('codigo',$codigo)->value('produto');
O problema dessa gramática é que ele sempre precisa estar conectado no banco de dados.
Tanto o PHP quanto o Laravel são capazes de jogar toda a tabela de produtos no terminal do cliente. A pergunta é: como o cliente vai consultar a tabela?
No caso do PHP, o desenvolvedor vai precisar da tecnologia do JavaScript.
Mas o Laravel já tem uma gramática mais robusta, olha só que bacana:
Eu adaptei o meu código baseado numa sugestão do Lary do Laracasts, mas ele apagou a sugestão, e assim não sei se é necessário a "relação" vinculados que foi definido no Model. O importante é o arquivo blade, onde usei pela primeira vez o método find. A tabela produto tem o campo codforn, por exemplo, "banana dúzia", codprod=15, codforn=1234. Depois eu criei o produto "banana peça", codprod=16, codforn='{"cod":15,"conv":12}'.
A banana peça está amarrado com o código 15. Para saber quem era o código 15, eu forçava o Blade a conectar com o banco de dados assim
{{app\models\tbprod::where('codprod',$codprod)->value('prod')}} e essa conexão era repetida tantas vezes para quantos produtos vinculados houvesse. Já o find faz o mesmo serviço, mas sem precisar de nenhuma conexão.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.