Skip to content

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

@ysshir

Description

@ysshir

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions