查找基于另一个枢轴关系的所有特定关系



我知道我的题目真的很奇怪!我希望我能解释清楚。我有三个模型,Book、author和AutherType。我的表结构:

表书:

<表类>id标题tbody><<tr>1book12book2

虽然不能对复杂的枢轴(belongsToMany关系)编写查询,但我们有两个选择:

  • 首先(这是最简单的一个):获取写入器类型id并通过关系传递它,如:
public function writers()
{
$writer_id = AuthorType::where('title', 'writer')->first()->id;
return $this->authors()->wherePivot('author_type_id', $writer_id);
}
  • 第二(繁重的选择),在Author模型中编写一个新方法,给出特定书籍的作者类型,然后在Book模型中根据该书的类型筛选作者:

inAuthor.php:

public function authorTypes()
{
return $this->belongsToMany('AppModelsAuthorType', 'author_book');
}
public function authorTypesForBook($book_id){
return $this->authorTypes()->wherePivot('book_id', '=' , $book_id);
}

Book.php:

public function writers()
{
$authors = $this->belongsToMany('AppModelsAuthor', 'author_book')->withPivot('author_type_id')->get();
$book_id = $this->id;

return $authors->filter(function ($item) use ($book_id){
return $item->authorTypesForBook($book_id)->get()->contains(function($value){
return $value->title == 'writer';
});
});
}

希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新