Составные ключевые отношения с топливной системой

Я пытаюсь заставить форму FuelPHP использовать составной ключ при использовании related() метод.

У меня есть настройка БД с двумя таблицами, и я хотел бы связать их на основе их составных ключей.

Например, я обычно использовал бы такое отношение в моей модели orm:

protected static $_has_one = [
'message_flag' => [
'key_from' => 'object_id',
'model_to' => '\ModelClass',
'key_to' => 'object_id',
'cascade_save' => false,
'cascade_delete' => false,
],
];

Но вместо того, чтобы использовать key_from => 'id а также key_to => 'object_idЯ хотел бы присоединиться к ним по их составному ключу, который может выглядеть примерно так:

protected static $_has_one = [
'message_flag' => [
'key_from' => ['object_id', 'other_key'],
'model_to' => '\ModelClass',
'key_to' => ['object_id', 'other_key',
'cascade_save' => false,
'cascade_delete' => false,
],
];

Чтобы уточнить, верхний пример, рекомендованный в документации к FuelPHP, создает запрос, который выглядит следующим образом:

SELECT `t0`.`object_id` AS `t0_c0`, `t0`.`other_key` AS `t0_c1` FROM `myTable` AS `t0` LEFT JOIN `otherTable` AS `t1` ON (`t0`.`object_id` = `t1`.`object_id`);

Но запрос, который я хотел бы построить с помощью ORM, выглядел бы так:

SELECT `t0`.`object_id` AS `t0_c0`, `t0`.`other_key` AS `t0_c1` FROM `myTable` AS `t0` LEFT JOIN `otherTable` AS `t1` ON (`t0`.`object_id` = `t1`.`object_id` AND `t0`.`other_key` = `t1`.`other_key`);

0

Решение

На самом деле, я только что попробовал мой обнадеживающий, но недокументированный пример выше

protected static $_has_one = [
'message_flag' => [
'key_from' => ['object_id', 'other_key'],
'model_to' => '\ModelClass',
'key_to' => ['object_id', 'other_key',
'cascade_save' => false,
'cascade_delete' => false,
],
];

Удивлен сказать, что это на самом деле работает. Тем не менее, если у кого-то еще есть подобная проблема, я надеюсь, что они найдут этот ответ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]