atk4\data\tests\ReferenceSQLTest::testBasicOne PHP Method

testBasicOne() public method

Tests that condition defined on the parent model is retained when traversing through hasMany.
public testBasicOne ( )
    public function testBasicOne()
    {
        $a = ['user' => [1 => ['id' => 1, 'name' => 'John'], 2 => ['id' => 2, 'name' => 'Peter'], 3 => ['id' => 3, 'name' => 'Joe']], 'order' => [['amount' => '20', 'user_id' => 1], ['amount' => '15', 'user_id' => 2], ['amount' => '5', 'user_id' => 1], ['amount' => '3', 'user_id' => 1], ['amount' => '8', 'user_id' => 3]]];
        $this->setDB($a);
        $db = new Persistence_SQL($this->db->connection);
        $u = (new Model($db, 'user'))->addFields(['name']);
        $o = (new Model($db, 'order'))->addFields(['amount']);
        $o->hasOne('user_id', $u);
        $this->assertEquals('John', $o->load(1)->ref('user_id')['name']);
        $this->assertEquals('Peter', $o->load(2)->ref('user_id')['name']);
        $this->assertEquals('John', $o->load(3)->ref('user_id')['name']);
        $this->assertEquals('Joe', $o->load(5)->ref('user_id')['name']);
        $o->unload();
        $o->addCondition('amount', '>', 6);
        $o->addCondition('amount', '<', 9);
        $this->assertEquals('select `id`,`name` from `user` where `id` in (select `user_id` from `order` where `amount` > :a and `amount` < :b)', $o->ref('user_id')->action('select')->render());
    }