[Ajuda] Buscar nome do usuário em relacionamento
[Concluído]
Pessoal, parece besta a dúvida porém fiquei encucado com uma dituação. Eu tenho um model "Process" (processos) e relacionei com o usuário logado, ou seja, quando cadastrar um novo processo vai o ID do usuário logado para eu pegar quem foi que criou o processo, até aí nenhuma novidade. Agora quando vou puxar o nome do usuário pelo relacionamento gera um erro:
Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsTo::name()
Código do Controller
public function index()
{
$tenent = Auth::user()->tenant()->first();
$process = Process::where('tenant_id', '=', $tenent->id)->get();
foreach ($process as $p)
{
dd($p->user()->name()); //aqui debugo para ver o retorno.
}
return view('admin.process.index', compact('process'));
}
Códido do Model
public function user()
{
return $this->belongsTo(User::class);
}
Carlos acho que "achei" o problema, porém achei também estranho porque eu fiz o seguinte (não sei se faz sentido):
1º - Movi para cima (o 1º método no model) chamando o relacionamento belongsTo para user()
2º - chamei o método no controle assim:
$p->user()->first()->name
e apareceu.
Porém para chamar o first() ele era para ser a última opção a ser chamada?
Olá, Roberto!
Tudo bem?
Está errado isso aí amigo.
Uma opção é fazer um filtro com usuários logados, exemplo:
public function user()
{
return $this->belongsTo(User::class)
->where(function($query) {
if (auth()->check()) {
$query->where('user_id', auth()->user()->id);
}
});
}
MASSS, creio que isso não vai te atender.
Como trazer o usuário relacionado?
$process = Process::where('tenant_id', $tenent->id)
->with(['user'])
->get();
No model Process precisa ter o relacionametno user (belongsTo)
A listagem:
foreach ($process as $p)
{
dd($p->user->name);
}
Deu super certo Carlos obg.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!