public function testCreateAndNewRecordSave() { $player = Player::create(['name' => 'foo']); /* * typeを明示しなければ各クラスで定義されたフィールドを持ち、 * typeには呼び出したクラス名が挿入される */ $this->assertInstanceOf('App\\Model\\Player', $player); $this->assertEquals(['name' => 'foo', 'type' => 'Player', 'id' => $player->id], Player::read($player->id)->getData()); $footballer = FootBaller::create(); $this->assertInstanceOf('App\\Model\\FootBaller', $footballer); $this->assertEquals(['name' => null, 'type' => 'FootBaller', 'club' => null, 'id' => $footballer->id], Player::read($footballer->id)->getData()); $cricketer = Player::newRecord(['name' => 'bar', 'type' => 'Cricketer', 'batting_average' => 10]); print_r($cricketer); $this->assertInstanceOf('App\\Model\\Cricketer', $cricketer); $this->assertEquals(true, $cricketer->save()); $this->assertEquals(['name' => 'bar', 'type' => 'Cricketer', 'batting_average' => 10, 'id' => $cricketer->id], Player::read($cricketer->id)->getData()); $bowller = Player::create(['name' => 'bar', 'type' => 'Bowller', 'batting_average' => 10]); $bowller->bowling_average = 100; $this->assertInstanceOf('App\\Model\\Bowller', $bowller); $this->assertEquals(['name' => 'bar', 'type' => 'Bowller', 'batting_average' => 10, 'bowling_average' => 100, 'id' => $bowller->id], Bowller::read($bowller->id)->getData()); /* * update */ $bowller->name = 'modified'; $this->assertEquals(true, $bowller->save()); $this->assertEquals(['name' => 'modified', 'type' => 'Bowller', 'batting_average' => 10, 'bowling_average' => 100, 'id' => $bowller->id], Player::read($bowller->id)->getData()); }