18. Laravel 模型关系:远程一对一
Laravel 模型关系:远程一对一
一个帖子属于一个作者,该作者就读一所学校。帖子可通过作者访问作者所在的学校。
简单的说:Thread 模型可以通过 Author 模型访问唯一的 School 模型。
表
threads: id, title
authors: id, name, thread_id
schools: id, name, author_id
// 一对一指的是:作者对学校
模型
# App\Thread
public function authorSchool()
{
return $this->hasOneThrough('App\School', 'App\Author');
}
# App\Thread
public function authorSchool()
{
return $this->hasOneThrough(
'App\School',
'App\Author',
'thread_id', // 作者表外键
'author_id', // 学校表外键
'id', // 帖子本地键
'id', // 作者本地键
);
}
使用
$school = \App\Thread::find(2)->authorSchool;
$threadsWithSchool = \App\Thread::with('authorSchool')->get();