【发布时间】:2015-03-11 08:19:54
【问题描述】:
我有两个模型教师和类别。这两者具有多对多关系。
我想得到那些有一个类别等于“OLevels”的老师。使用哪种雄辩的方法或有其他方法可以得到它?
有没有办法得到它:
$teachers = Teacher::where('category', '=', 'OLevels')->get();
【问题讨论】:
标签: laravel eloquent laravel-5
我有两个模型教师和类别。这两者具有多对多关系。
我想得到那些有一个类别等于“OLevels”的老师。使用哪种雄辩的方法或有其他方法可以得到它?
有没有办法得到它:
$teachers = Teacher::where('category', '=', 'OLevels')->get();
【问题讨论】:
标签: laravel eloquent laravel-5
您可以为此使用whereHas:
$category = 'OLevels';
$teachers = Teacher::whereHas('category', function($q) use ($category){
$q->where('name', $category);
})->get();
【讨论】:
$teachers = Teacher::whereHas('category', function($q){ $q->where('name', $category); })->get();我想在里面使用变量$category,但是它的作用域在闭包函数中是不可用的...如何获取$category里面的值?
您可以使用带有约束的预加载
$teachers = Teacher::with(['category' => function($query)
{
$query->where('category', '=', 'OLevels');
}])->get();
documentation 中的更多信息。
【讨论】:
teachers 没有急切加载的类别集合。应该使用whereHas。