【问题标题】:Compound key relationship with fuelphp orm与fuelphp orm的复合键关系
【发布时间】:2015-08-06 19:31:14
【问题描述】:

我正在尝试让 FuelPHP 的 orm 在使用 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 => 'idkey_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`);

【问题讨论】:

    标签: php mysql orm fuelphp fuelphp-orm


    【解决方案1】:

    实际上,我只是尝试了我上面的有希望但未记录的示例

    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,
        ],
    ];
    

    惊讶地说这确实有效。不过,如果其他人有类似的问题,我希望他们能找到这个答案。

    【讨论】:

    • 你是不是在第 5 行缺少一个右方括号?
    • 如果这是一个记录的功能。您可能需要考虑创建一个拉取请求以在此处记录它:github.com/fuel/docs
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2017-03-14
    • 2020-08-13
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多