[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Roberto Ferreira
Criador Roberto Ferreira 29/10/2020

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);

}

Criador Roberto Ferreira 29/10/2020

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?

Roberto Ferreira
Manager Carlos Ferreira 29/10/2020

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);
}

Carlos Ferreira
Criador Roberto Ferreira 29/10/2020

Deu super certo Carlos obg.

Roberto Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!