day8の今日はday7で定義したリレーション先テーブルのデータを利用する方法を見ていきます。
Doctrine
<?php
declare(strict_types=1);
use App\Entity\Author;
use App\Entity\Book;
use Doctrine\ORM\EntityManagerInterface;
require __DIR__.'/../vendor/autoload.php';
/** @var EntityManagerInterface $entityManager */
$entityManager = require __DIR__.'/bootstrap.php';
$book1 = $entityManager->getRepository(Book::class)->find(1);
echo $book1->getAuthor()->getName(); // Authorのnameを見ることができる
$author1 = $entityManager->getRepository(Author::class)->find(1);
// $author1の著作タイトルをすべて表示
foreach ($author1->getBooks() as $book) {
echo $book->getTitle().PHP_EOL;
}
Eloquent
<?php
declare(strict_types=1);
use App\Models\Author;
use App\Models\Book;
require __DIR__.'/../vendor/autoload.php';
$book1 = Book::find(1);
echo $book1->author->name; // Authorのnameを見ることができる
$author1 = Author::find(1);
// $author1の著作タイトルをすべて表示
foreach ($author1->books as $book) {
echo $book->title.PHP_EOL;
}
- Doctrineと違い、リレーション定義時に定義したのは
author()
books()
メソッドでしたがデータを読み取るのはauthor
books
プロパティになる点に注意が必要です。