Я пытаюсь выяснить, как загружать данные из связанной таблицы. У меня есть 2 модели Group
и GroupTextPost
.Eloquent - Eager Загрузка отношений
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');
}
}
То, что я пытаюсь сделать, это стремится нагружают user
при извлечении группы текстовых сообщений, так что, когда я тяну сообщения, в которые включено имя пользователя.
Я пытался делать это так:
public function messages()
{
return $this->hasMany('\App\Models\GroupTextPost')->with('user');
}
... и называя так:
$group = Group::find($groupID);
$group->messages[0]->firstname
Но я получаю сообщение об ошибке:
Unhandled Exception: Call to undefined method Illuminate\Database\Query\Builder::firstname()
Является ли это можно сделать с Eloquent?
Try '' '$ т = $ группы-> сообщения() -> получить()' '', а затем '' '$ m [0] -> user [0] -> first_name;' '' – Dev
Сообщения будут иметь имя или имя пользователя? – Dev
Пользователь @Dev имеет первое имя. – BugHunterUK