保存实体

    引入相关类

    • use Leevel\Database\Ddd\Entity;
    • use Tests\Database\DatabaseTestCase as TestCase;
    • use Tests\Database\Ddd\Entity\TestConstructPropBlackEntity;
    • use Tests\Database\Ddd\Entity\TestConstructPropWhiteEntity;
    • use Tests\Database\Ddd\Entity\TestCreateAutoFillEntity;
    • use Tests\Database\Ddd\Entity\TestCreatePropWhiteEntity;
    • use Tests\Database\Ddd\Entity\TestEntity;

    完整例子

    1. public function testBaseUse()
    2. {
    3. $entity = new TestEntity();
    4. $this->assertInstanceof(Entity::class, $entity);
    5. $entity->name = 'foo';
    6. $this->assertSame('foo', $entity->name);
    7. $this->assertNull($entity->flushData());
    8. $entity->save();
    9. $data = <<<'eot'
    10. {
    11. "name": "foo"
    12. }
    13. ]
    14. eot;
    15. $this->assertSame(
    16. $data,
    17. $this->varJson(
    18. $entity->flushData()
    19. )
    20. );

    ::: tip
    通过 save 方法保存一个实体,并通过 flush 将实体持久化到数据库。
    :::

    完整模型

    1. public function testConsturctPropWhite()
    2. {
    3. 'id' => 5,
    4. 'name' => 'foo',
    5. ]);
    6. $this->assertSame(5, $entity->getId());
    7. $this->assertNull($entity->getName());
    8. }

    完整模型

    调用 construct_prop_black => true 来设置字段黑名单,一旦设置了黑名单处于黑名单的数据无法通过构造器更新模型属性。

    1. public function testConsturctPropBlack()
    2. {
    3. $entity = new TestConstructPropBlackEntity([
    4. 'id' => 5,
    5. 'name' => 'foo',
    6. ]);
    7. $this->assertNull($entity->getId());