首页 文章

Laravel属于关系

提问于
浏览
6

好吧,我对模特的belongsTo关系有点困惑 .

我有一个扩展Eloguent的Feeds模型 .

我创建了一个名为User的关系函数 .

public function user(){
  return $this->belongsTo('User'); // and I also tried return $this->belongsTo('User', 'user_id');
}

在我想要做的观点上:

@foreach($feeds as $feed)
{{$feed->user()->first_name}} {{$feed->user()->last_name}}
@endforeach

但我收到此错误未定义属性:Illuminate \ Database \ Eloquent \ Relations \ BelongsTo :: $ last_name

当我执行$ feed-> user-> first_name时它工作正常,但我认为user() - > first_name效率更高 . 我究竟做错了什么?

这是数据库的字段和数据类型:

供稿

feed_id INT
user_id INT
feed Text
created_at TIMESTAMP
updated_at TIMSTAMP
school_id INT

用户

user_id INT
username VARCHAR
password VARCHAR
first_name VARCHAR
last_name VARCHAR
created_at TIMESTAMP
updated_at TIMESTAMP

1 回答

  • 18

    使用动态属性

    $feed->user->first_name;
    

    当您使用动态属性时,它与执行以下操作相同,除非Laravel使用magic __call() 方法为您执行此操作 .

    $feed->user()->first()->first_name;
    

    仅使用函数$ feed-> user()允许您获得允许您在另一端获取实体之前添加额外约束和 with 关系的关系 .

相关问题