Slide 1

Slide 1 text

03.Ϣʔβʔରஊ 1)1ΧϯϑΝϨϯεؔ੢

Slide 2

Slide 2 text

ాதͻͯ͞Δ ϞσϨʔλʔ

Slide 3

Slide 3 text

8IZ w 1)1ʹ͸͍Ζ͍Ζͳ03.͕͋Δ w ςʔϒϧ͕ͭͳΒࠩ͸͋·Γͳ͍ w ςʔϒϧҎ্͋Δͱ͖ɺͦΕͧΕͷҧ͍Λ஌Γͨ ͍

Slide 4

Slide 4 text

4&-&$5'30.CPPLT8)&3&JE $stmt = $pdo->query( "SELECT * FROM books WHERE id=1;” ); $book = $stmt->fetch(); echo $book['title'] . "\n";

Slide 5

Slide 5 text

&MPRVFOU03. w -BSBWFMຊͷ%#ͷষΛ୲౰ w &MPRVFOU-BSBWFMͰ࢖ΘΕΔ03. w .PEFMΛܧঝ͢Δ͚ͩͰ࢖͑Δ"DUJWF3FDPSE େଜ૑ଠ࿠

Slide 6

Slide 6 text

$book = Book::find(1); echo $book->title; use Illuminate\Database\Eloquent\Model; class Book extends Model { }

Slide 7

Slide 7 text

%PDUSJOF03. w &$$6#&ϦϦʔε࣌ͷ։ൃϦʔμʔ w 4ZNGPOZͰ࠾༻͞Ε͍ͯΔ03. w ಛʹԿ΋ܧঝ͠ͳ͍Ϋϥε͕جຊ w +BWB͔Βଓ͘఻౷తͳ03. ߴڮ৻Ұ

Slide 8

Slide 8 text

/** * @ORM\Entity * @ORM\Table(name="books") */ class Book { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\Column(type="string", length=100) */ private $title;

Slide 9

Slide 9 text

$repository = $doctrine ->getRepository(‘BookBundle:Book’); $book = $repository->find(1); echo $book->getTitle(); class Book { private $id; private $title; }

Slide 10

Slide 10 text

$BLF1)103. w ؔ੢Ͱ΋ͬͱ΋$BLF1)1ʹΞπ͍உ w "SSBZΛฦ͍ͯͨ͠$BLF1)1·Ͱͱ͸શ͘ผ ͷ΋ͷ w ΋ͬͱ΋໨৽͍࣮͠૷ͳͷͰ஫໨ ݪా߁ੜ

Slide 11

Slide 11 text

use Cake\ORM\Entity; class Book extends Entity { // … } use Cake\ORM\Table; class BooksTable extends Table { // … } UBCMF5BCMF3FHJTUSZHFU b#PPLT` CPPLUBCMFHFU FDIPCPPLUJUMF

Slide 12

Slide 12 text

ςʔϒϧؔ܎

Slide 13

Slide 13 text

CPPLT BVUIPST

Slide 14

Slide 14 text

SELECT * FROM books LEFT JOIN authors ON authors.id = books.author_id

Slide 15

Slide 15 text

&MPRVFOUͷˎ $book = Book::find(1); echo $book->author->name; class Book extends Model { public function author() { return $this->belongsTo(Author::class); } }

Slide 16

Slide 16 text

&MPRVFOUͷˎ select * from `books` where `books`.`id` = ? limit 1 select * from `authors` where `authors`.`id` = ? limit 1

Slide 17

Slide 17 text

$BLF1)1ͷˎ class BooksTable extends Table { public function initialize(array $config) { parent::initialize($config); $this->belongsTo('Authors'); } $book = TableRegistry::get('Books')->get(1, [ 'contain' => ['Authors'] ]); echo $book->author->name;

Slide 18

Slide 18 text

$BLF1)1ͷˎ SELECT Books.id AS `Books__id`, Books.title AS `Books__title`, Books.price AS `Books__price`, Books.author_id AS `Books__author_id`, Authors.id AS `Authors__id`, Authors.name AS `Authors__name`, Authors.has_copyright AS `Authors__has_copyright` FROM books Books LEFT JOIN authors Authors ON Authors.id = (Books.author_id) WHERE Books.id = 1 LIMIT 1

Slide 19

Slide 19 text

%PDUSJOFઃఆʹΑΔ /** * @ORM\ManyToOne(targetEntity="Author", inversedBy="books") * @ORM\JoinColumn(name="author_id", referencedColumnName="id") */ private $author; /** * @ORM\ManyToOne(targetEntity="Author", inversedBy="books", fetch="EAGER") * @ORM\JoinColumn(name="author_id", referencedColumnName="id") */ private $author; SELECT t0.id AS id_1, t0.title AS title_2, t0.price AS price_3, t0.author_id AS author_id_4 FROM books t0 WHERE t0.id = 1; SELECT t0.id AS id_1, t0.name AS name_2, t0.has_copyright AS has_copyright_3 FROM authors t0 WHERE t0.id = 1; SELECT t0.id AS id_1, t0.title AS title_2, t0.price AS price_3, t0.author_id AS author_id_4, t5.id AS id_6, t5.name AS name_7, t5.has_copyright AS has_copyright_8 FROM books t0 LEFT JOIN authors t5 ON t0.author_id = t5.id WHERE t0.id = 1;

Slide 20

Slide 20 text

/໰୊

Slide 21

Slide 21 text

&MPRVFOU-B[ZWT&BHFS $books = Book::with('author')->get(); foreach ($books as $book) { echo $book->author->name; } select * from `books` select * from `authors` where `authors`.`id` in (1, 2, 3, 4) $books = Book::get(); foreach ($books as $book) { echo $book->author->name; } select * from `books` select * from `authors` where `authors`.`id` = 1 select * from `authors` where `authors`.`id` = 1 select * from `authors` where `authors`.`id` = 1 select * from `authors` where `authors`.`id` = 2 … ͜Ε͕ books ͷ਺͚ͩൃੜ

Slide 22

Slide 22 text

%PDUSJOF&OUJUZ.BOBHFS &OUJUZ.BOBHFS $book->getAuthor() BVUIPSʜBVUIPSO ϨΠδʔͷൃੜ͸BVUIPS਺·Ͱ

Slide 23

Slide 23 text

ΦϒδΣΫτಉҰੑ ٯϦϨʔγϣϯ

Slide 24

Slide 24 text

ಉҰੑ͕ҡ࣋͞ΕΔͷ͔ BVUIPSCPPLT<>BVUIPS 㱠

Slide 25

Slide 25 text

$BLF1)1ͷ৔߹ BVUIPSCPPLT<>BVUIPS ΫΤϦ࣌ʹDPOUBJOͰࢦఆͨ͠ൣғͷΈଘࡏ͢Δ ॥؀͢Δ৔߹͸ͦ΋ͦ΋ࢦఆࣗମ͕Ͱ͖ͳ͍

Slide 26

Slide 26 text

ٯϦϨʔγϣϯ :JJ BVUIPS CPPLT JOWFSTFE0G bBVUIPS` BVUIPS BVUIPS CPPLT

Slide 27

Slide 27 text

%PDUSJOF&OUJUZ.BOBHFS &OUJUZ.BOBHFS $author->getBooks()[0]->getAuthor() BVUIPS …->getAuthor() ಉҰϨίʔυ ৗʹಉ͡Πϯελϯε

Slide 28

Slide 28 text

ສ݅όονॲཧ

Slide 29

Slide 29 text

όοϑΝඇόοϑΝ GPSFBDI CPPLTBTCPPL \ ^ GPSFBDI CPPLTBTCPPL \ ^ ($ ($ GFUDI GSFF GFUDI GSFF Yສ ສϧʔϓ CPPLTΠςϨʔλʔ CPPLT഑ྻ

Slide 30

Slide 30 text

ʮ03.͕͋Ε͹42-Λ஌Βͳͯ͘΋࡞ΕΔʯ ʮ42-Λ஌ͬͯΕ͹03.͸ͳ͍͍ͯ͘ʯ ͜ΕͲ͏Α

Slide 31

Slide 31 text

ڧྗ͗͢Δ42- ˣ ߏ଄త੍໿