チャットを手伝った後、問題は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などを使用して)、データベースに関連するエントリが実際にあることを確認する必要があります。