Laravel:地点和地点之间的区别

时间:2014-12-09 06:14:36

标签: laravel

两个方法有哪些区别()和whereHas()?它们在laravel文档中看起来都非常相似。

1 个答案:

答案 0 :(得分:3)

方法where()的行为类似于常规SQL WHERE查询部分。

方法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的学生,他们正在上物理课。