fuel / orm

Fuel PHP Framework - Fuel v1.x ORM
http://fuelphp.com/docs/packages/orm/intro.html
152 stars 96 forks source link

Related first child's key is not replaced with imploded PK after save() #414

Open ysshir opened 7 years ago

ysshir commented 7 years ago

I have the code like below.

Model_Test {
    ...
    'details' => [
            'key_from'     => 'id',
            'model_to'     => 'Model_Child',
            'key_to'       => 'parent_id',
            'cascade_save' => true,
        ],
    ...
}

Model_Child {
    ...
}

$test = Model_Test::forge(...);
$test->children = array();
$test->children[] = Model_Child::forge(...);
$test->children[] = Model_Child::forge(...);
$test->children[] = Model_Child::forge(...);
$test->save();

After save() method was called, the keys of $test->children should be imploded PK, But in this case, the key of the first child is still 0.

Because the old key was 0, the comparation with new string key returns true.

Orm\HasMany line189 if ($key != ($current_model_id = $model_to->implode_pk($model_to)))

I think this line should be if (strval($key) != ($current_model_id = $model_to->implode_pk($model_to)))

Actually I don't have any problem yet with this issue. but feel bit weird.

thanks.