Boa tarde !
Estou praticando o aprendizado do curso reescrevendo um código que possuía em estilo procedural.
Tenho uma Model que possui um relacionamento hasMany com outra Model e preciso imprimir um atributo da Collection deste relacionamento. Como eu faço isso ?
Exemplo da Model :
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Cliente
*
* @property int $clcod
* @property string|null $clcpfcgc
* @property Carbon|null $cldt_nascimento
* @property string|null $clempresa
* @property string|null $clprofissao
* @property string|null $clestado_civil
* @property string|null $clmae
* @property string|null $clpai
* @property string|null $clnaturalidade
* @property string|null $clrg
* @property Carbon|null $clrg_expedida
* @property string|null $clrg_org_expedidor
* @property Carbon|null $cldt_cadastro
* @property string|null $clnome
* @property string|null $clobservacao
*
* @property Collection|Audiencia[] $audiencias
* @property Collection|ClienteEmail[] $cliente_emails
* @property Collection|ClienteEndereco[] $cliente_enderecos
* @property Collection|ClienteTelefone[] $cliente_telefones
* @property Collection|Processo[] $processos
*
* @package App\Models
*/
class Cliente extends Model
{
protected $table = 'clientes';
protected $primaryKey = 'clcod';
public $timestamps = false;
protected $dates = [
'cldt_nascimento',
'clrg_expedida',
'cldt_cadastro'
];
protected $fillable = [
'clcpfcgc',
'cldt_nascimento',
'clempresa',
'clprofissao',
'clestado_civil',
'clmae',
'clpai',
'clnaturalidade',
'clrg',
'clrg_expedida',
'clrg_org_expedidor',
'cldt_cadastro',
'clnome',
'clobservacao'
];
public function audiencias()
{
return $this->hasMany(Audiencia::class, 'adproc_clcod');
}
public function cliente_emails()
{
return $this->hasMany(ClienteEmail::class, 'emclcod');
}
public function cliente_enderecos()
{
return $this->hasMany(ClienteEndereco::class, 'ceclcod');
}
public function cliente_telefones()
{
return $this->hasMany(ClienteTelefone::class, 'ctclcod');
}
public function processos()
{
return $this->hasMany(Processo::class, 'proc_clcod');
}
}
Desta forma tentei acessar o atributo email da Model Clienteemail apartir do cliente da seguinte forma :
{{ $cliente->cliente_emails()->get('ememail')->first() }}
O resultado foi : {"ememail":"1234@terra.com.br"}
Como faria para exibir somente : 1234@terra.com.br ?
Entendo também que desta forma estou executando uma query certo ? Como faço para pegar direto o atributo desta Collection através deste relacionamento ?
Tentei :
$cliente->cliente_emails->ememail
Porem ele retorna um erro dizendo que este atributo não existe nesta Collection
Quando imprimo só a Collection o resultado é o seguinte :
[{"emid":32,"ememail":"1234@terra.com.br","emclcod":3}]
De antemão agradeço a ajuda.