Ich versuche herauszufinden, wie eifrig Daten aus einer verwandten Tabelle geladen werden. Ich habe 2 Modelle Group
und GroupTextPost
.Eloquent - Eager Loading Relationship
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');
}
}
Was ich versuche ist eifrig Last zu tun, die user
wenn das Abrufen Gruppe Text-Beiträge so, dass, wenn ich ziehen In den Nachrichten ist der Name des Benutzers enthalten.
Ich habe versucht, es wie so tun:
public function messages()
{
return $this->hasMany('\App\Models\GroupTextPost')->with('user');
}
... und Aufruf wie folgt:
$group = Group::find($groupID);
$group->messages[0]->firstname
Aber ich erhalte eine Fehlermeldung:
Unhandled Exception: Call to undefined method Illuminate\Database\Query\Builder::firstname()
Ist das möglich mit Beredtsam zu tun?
Try verwenden '' '$ m = $ gruppen-> Nachrichten() -> get();' '' und dann '' '$ m [0] -> user [0] -> first_name;' '' – Dev
Nachrichten haben den Vornamen oder den Benutzer haben? – Dev
@Dev Benutzer hat den Vornamen. – BugHunterUK