Eloquent - Relacionamento de carregamento ansioso
Estou tentando descobrir como carregar dados rapidamente de uma tabela relacionada. Eu tenho 2 modelosGroup
eGroupTextPost
.
Group.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Group extends Model
{
protected $table = 'group';
public function type()
{
return $this->hasOne('\App\Models\GroupType');
}
public function user()
{
return $this->belongsTo('\App\Models\User');
}
public function messages()
{
return $this->hasMany('\App\Models\GroupTextPost');
}
}
GroupTextPost.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class GroupTextPost extends Model
{
protected $table = 'group_text_post';
public function user()
{
return $this->belongsTo('\App\Models\User');
}
public function group()
{
return $this->belongsTo('\App\Models\Group');
}
}
O que estou tentando fazer é carregar ansiosamente ouser
ao buscar postagens de texto em grupo para que, quando eu recebo as mensagens, o nome do usuário seja incluído.
Eu tentei fazê-lo assim:
public function messages()
{
return $this->hasMany('\App\Models\GroupTextPost')->with('user');
}
... e chamando assim:
$group = Group::find($groupID);
$group->messages[0]->firstname
Mas eu recebo um erro:
Unhandled Exception: Call to undefined method Illuminate\Database\Query\Builder::firstname()
Isso é possível com o Eloquent?