darlan_machado 6 de mai. de 2019
Verifique se o nome da coluna é realmente id ou se está diferente.
JeffersonSO 6 de mai. de 2019
Verifica se o seu modelo ‘User’ possui a propriedade id, pois ele não esta sendo encontrado na Collection do Objeto de User(que está sendo retornada na query)
Dragoon 6 de mai. de 2019 1 like
Fala ler realmente a documentação , porque o método join segue a nomenclatura:
primeiro parâmetro: nome da tabela que relaciona
segundo parâmetro: nome da tabela e o campo que relaciona
terceiro parâmetro: sinal (>=,=, <>, <=)
quarto parâmetro: o nome da tabela e o campo que relaciona
e no seu faltou isso:
Então deve ser:
|
V
$ usu = User :: join ( 'empresa_usuarios' , 'empresa_usuarios.usr_codigo' , '=' , 'users.id' )
- > where ( 'emp_codigo' , '=' , session ( 'empresa_id' ))
- > where ( 'users.id' , '=' ,$ id )
- > select ( 'users.*' )
- > get ();
Dica
Quanto tiver a duvida da SQL gerada
$ usu = User :: join ( 'empresa_usuarios' , 'empresa_usuarios.usr_codigo' , '=' , 'users.id' )
- > where ( 'emp_codigo' , '=' , session ( 'empresa_id' ))
- > where ( 'users.id' , '=' ,$ id )
- > select ( 'users.*' )
- > toSql (); // somente a SQL
nesse caso ele te traz a SQL gerada e você pode debugar por isso e ver os problemas
Cleiton_Conceicao 6 de mai. de 2019
Tem lugares no sistema que não utiliza o = e funciona, mas fiz essas alterações e não funcionou.
Essa segunda dica, como faço para ver o SQL gerado?
O engraçado que eu passo assim e funciona.
o campo id existe na tabela.
Solucao aceita
Cleiton_Conceicao 7 de mai. de 2019
perdi a paciência então fiz diferente…
public function edit ($ id )
{
$usu = User : : find ( $ id );
if(isset($usu)){
$Emp = DB : : table ( 'empresa_usuarios' )
-> where ( 'usr_codigo' , '=' , $ id )
-> where ( 'emp_codigo' , '=' , session ( 'empresa_id' ))
-> get ();
if(count($Emp)==0){
abort(404) ;
}
else {
return view('editarUsuario',compact('usu')) ;
}
}
return redirect ( '/usuario' );
}
Dragoon 7 de mai. de 2019 1 like
Só pra ficar bem claro isso não é a solução isso é um paliativo da sua solução, então você manda trazer uma informação e depois não usa, o engraçado do seu código é nesse aspecto e se você não utiliza o Laravel do jeito certo (que é um Framework onde o conceito de caixa fechada está explicito, você pode ter problemas futuros, e isso são alertas).
Eu postei como ver a SQL gerado:
$ usu = User :: join ( 'empresa_usuarios' , 'empresa_usuarios.usr_codigo' , '=' , 'users.id' )
- > where ( 'emp_codigo' , '=' , session ( 'empresa_id' ))
- > where ( 'users.id' , '=' ,$ id )
- > select ( 'users.*' )
- > toSql (); // somente a SQL
depois dessa linha de um var_dump($usu) que você vai ver a SQL gerada.