具有附加数据的关系 BelongsToMany
Relationship BelongToMany with additional data
我有 3 tables:
- 课程(有category_id)
- 作者
- 类别(课程)
在我的 Authors 模型中,我添加了:
public function courses () {
return $this->belongsToMany('App\Course', 'courses2authors')->where('status','=', 1);
}
"courses2authors"是支点table。
然后在我的控制器中我检索课程信息:
$authors = Author::where('status', '=', 1)->orderBy('pos')->with('courses')->get();
没关系,但是我只有category_id在->课程中,如何在模型关系中添加类别名称。
我尝试类似的方法:
return $this->belongsToMany('App\Course', 'courses2authors')
->where('status','=', 1)->join('categories', 'categories.id', '=',
'courses.category_id')->select('categories.name as categoria');
但是这种方式只取类名,不取课程数据。
您可以在 课程 模型中定义 belongsTo
关系 类别。
课程模型
public function categories () {
return $this->belongsTo('App\Categories', 'category_id');
}
在使用 Courses
检索 Author
时,您可以像这样使用。 (控制器代码)
$authors = Author::where('status', '=', 1)->orderBy('pos')
->with('courses',function($query){
$query->with('categories);
})->get();
如果你不想这样使用,那么你可以在 Courses
模型中设置 $with 属性。
protected $with = ['categories']; // default with define here.
在控制器中使用:-
$authors = Author::where('status', '=', 1)->orderBy('pos')
->with('courses')->get();
我有 3 tables:
- 课程(有category_id)
- 作者
- 类别(课程)
在我的 Authors 模型中,我添加了:
public function courses () {
return $this->belongsToMany('App\Course', 'courses2authors')->where('status','=', 1);
}
"courses2authors"是支点table。 然后在我的控制器中我检索课程信息:
$authors = Author::where('status', '=', 1)->orderBy('pos')->with('courses')->get();
没关系,但是我只有category_id在->课程中,如何在模型关系中添加类别名称。
我尝试类似的方法:
return $this->belongsToMany('App\Course', 'courses2authors')
->where('status','=', 1)->join('categories', 'categories.id', '=',
'courses.category_id')->select('categories.name as categoria');
但是这种方式只取类名,不取课程数据。
您可以在 课程 模型中定义 belongsTo
关系 类别。
课程模型
public function categories () {
return $this->belongsTo('App\Categories', 'category_id');
}
在使用 Courses
检索 Author
时,您可以像这样使用。 (控制器代码)
$authors = Author::where('status', '=', 1)->orderBy('pos')
->with('courses',function($query){
$query->with('categories);
})->get();
如果你不想这样使用,那么你可以在 Courses
模型中设置 $with 属性。
protected $with = ['categories']; // default with define here.
在控制器中使用:-
$authors = Author::where('status', '=', 1)->orderBy('pos')
->with('courses')->get();