Jak u každého autora vypsaly jen knihy, které napsal a mají tag PHP?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- buffus
 - Člen | 101
 
Ahoj, prosím o radu.
NDBT v2.3.6, MySQL DB podle schema
Modelová metoda withBookTag($tag) vybere všechny autory, kteří napsali knihu se štítkem „PHP“ ($tag = ‚PHP‘).
V presenteru v renderDefault()
- vnější foreach vypíše všechny autory, kteří napsali knihu se štítkem „PHP“
 - a vnitřní foreach ke každému autorovi všechny knihy, které napsal.
 
Potřeboval bych, aby se mi u každého autora vypsaly jen knihy s tagem PHP?
<?php
namespace App\Model;
use Nette;
class AuthorManager extends Nette\Object
{
	private $database;
	public function __construct(Nette\Database\Context $database)
	{
		$this->database = $database;
	}
	public function withBookTag($tag)
	{
		return $this->database->table('author')
						->where(':book:book_tag.tag.name', $tag)
						->group('author.id')
						->having('COUNT(:book:book_tag.tag.id) > 0');
	}
}
?>
<?php
namespace App\Presenters;
use Nette;
use App\Model;
class HomepagePresenter extends BasePresenter
{
	private $author;
	public function __construct(Model\AuthorManager $author)
	{
		$this->author = $author;
	}
	public function renderDefault()
	{
		$tag = 'PHP';
		$authors = $this->author->withBookTag($tag);
		foreach ($authors as $author) {
			echo $author->name . " napsal: ";
			foreach ($author->related('book') as $book) {
				echo $book->title . ", ";
			}
			echo "<br>";
		}
	}
}
?>