Laravel:where和where之间的差异
where()和whereHas()这两个方法之间有什么区别?它们在laravel文档中似乎非常相似。方法Laravel:where和where之间的差异,laravel,Laravel,where()和whereHas()这两个方法之间有什么区别?它们在laravel文档中似乎非常相似。方法where()的行为类似于常规的SQLwhere查询部分 方法has()使用外键关系返回包含其他内容的内容。例如,Student::has('classes')->get()将返回所有上课的学生 方法whereHas()类似于常规的has(),但它允许您对搜索施加约束。与where()不同,这是在子表而不是父表上完成的。下面是一个例子: $students = Student::where(
where()
的行为类似于常规的SQLwhere
查询部分
方法has()
使用外键关系返回包含其他内容的内容。例如,Student::has('classes')->get()
将返回所有上课的学生
方法whereHas()
类似于常规的has()
,但它允许您对搜索施加约束。与where()
不同,这是在子表而不是父表上完成的。下面是一个例子:
$students = Student::where('name', 'Pingu') // constrains the students table
->whereHas('classes', function($query) {
$query->where('name', 'like', '%physics%'); // constrains the classes table
})->get();
在这个非常现实的示例中,您希望所有名为Pingu的学生都在上物理课。方法where()
的行为类似于常规SQLwhere
查询部分
方法has()
使用外键关系返回包含其他内容的内容。例如,Student::has('classes')->get()
将返回所有上课的学生
方法whereHas()
类似于常规的has()
,但它允许您对搜索施加约束。与where()
不同,这是在子表而不是父表上完成的。下面是一个例子:
$students = Student::where('name', 'Pingu') // constrains the students table
->whereHas('classes', function($query) {
$query->where('name', 'like', '%physics%'); // constrains the classes table
})->get();
在这个非常现实的示例中,您希望所有名为Pingu的学生都在上物理课。如果我想在透视表(而不是子表)中添加列约束,该怎么办?我能用那个结尾的什么地方吗?可能不行,我不太记得了。如果我需要这种查询能力,我通常会将透视表制作成一个中间模型。如果我想在透视表(而不是子表)中添加列约束,该怎么办?我能用那个结尾的什么地方吗?可能不行,我不太记得了。如果我需要这种查询能力,我通常会将数据透视表制作成一个中间模型。