チャットを手伝った後、問題はgroupという既存の列があったことでした。 、およびリレーションシップメソッドはgroupとも呼ばれていました 、したがって、テーブルの列の値がリレーションシップメソッドよりも優先されていました。
リレーションシップメソッド、またはgroupの名前を変更します 列をgroup_idのようなものに変更します どちらも適切なソリューションです(group_idをお勧めします ルート)。
元の回答:
メソッドから直接ではなく、マジックプロパティを介してグループを取得します。
echo User::find(1)->group->name;
group()を取得した場合 メソッドの場合、リレーションシップオブジェクトを返し、クエリを実行せず、関連するオブジェクトをフェッチします。
また、Eloquentは、外部キー列名が何であるかを想定します。 Group 自動的にgroup_idに変換されます 桁。 groupという既存の列がある場合 、次に、関係で明示的に指定する必要があります:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
プロパティgroupに対して「非オブジェクトのプロパティを取得しようとしています」というエラーが表示された場合 、その後、関係は結果を返しません($user->group NULLになります )。その時点で、関係が適切に設定されていることを確認し(たとえば、正しいbelongsTo、hasOne、hasManyなどを使用して)、データベースに関連するエントリが実際にあることを確認する必要があります。