Php 拉雷维尔口若悬河地得到了具体的关系

Php 拉雷维尔口若悬河地得到了具体的关系,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我试图获取作者来自特定国家的书籍,目前我的查询如下: $books->with('author')->where('country', '=', 'FR'); 但是where适用于书籍,而不是作者 有什么帮助吗?您需要使用whereHas()。下面的代码应该可以做到这一点: $country = 'FR'; $books = Book::with('author')->whereHas('author', function($query) use ($country) {

我试图获取作者来自特定国家的书籍,目前我的查询如下:

$books->with('author')->where('country', '=',  'FR'); 
但是where适用于书籍,而不是作者


有什么帮助吗?

您需要使用whereHas()。下面的代码应该可以做到这一点:

$country = 'FR';
$books = Book::with('author')->whereHas('author', function($query) use ($country) {
  $query->where('country', '=',  $country);
})->get();

这将为您提供所有有相关作者的书籍,这些书籍的country列设置为FR

谢谢!我可以把另一个参数传递给闭包吗?我试过了,但出现了一个错误缺少参数2您希望传递什么?你不能这么做,但我猜你的意思是在闭包的外部范围内使用变量。我已经更新了答案