Вы можете сделать это с энергичной загрузкой, не загружая все сообщения.Существует метод, который называется withCount
Books.php
public function posts() {
return $this->hasMany(Post::class, 'post_id', 'id');
}
Один из способов найти все сообщения, связанные с книгой:
$books = Books::withCount(['posts' => function ($query) use($searchTerm) {
$query->where('body', 'like', $searchTerm);
}])->get();
//How to retrieve
$book = $books->first()->posts_count.
Вы можете найти больше информации о withCount на веб-сайте документации 1012 *.
Подход 2: Без быстрой загрузки
$books = Books::select('*')->addSelect(DB::raw("SELECT COUNT(*) as post_count FROM `posts` WHERE `body` LIKE '%book.name%' ")->get(); //This will return collection with post_count.
Примечание: не тестировалось