【问题标题】:ATK4: No unique column in tableATK4:表中没有唯一列
【发布时间】:2014-02-16 04:41:07
【问题描述】:

如何根据没有单列主键的数据库表实现模型?该表具有复合主键,但没有唯一列。我想创建一个将此表作为其主表的模型,但据我所知,该模型需要一个唯一的 id 字段。

该表包含服务的自定义字段值,由以下 3 列组成:field_id、service_id、value。我需要能够引用服务存在的所有自定义字段值,还需要引用链接到特定值的所有服务。

我遇到的两个主要问题是..

1) 基于没有唯一列的自定义字段值表构建模型

2) 使用两个“ON”条件完成连接。例如:

services JOIN fields ON
    services.id = field.service_id
JOIN values ON
    field.id = values.field_id AND
    values.service_id = services.id

【问题讨论】:

    标签: php user-interface frameworks atk4


    【解决方案1】:

    1) 几天前在以下问题中查看我和罗马人的答案:Junction Table with mutiple primary keys

    2) 这很简单 - 您应该添加下一个连接,而不是为自己建模,而是添加到上一个“连接”

    $j_fields = $services_model->join('fields');
    $j_values = $j_fields->join('values'); // $j_fields here not $services_model
    

    您还以某种方式定义了第二个条件 (values.service_id=services.id),但说实话,我没有准备好发布的工作示例。据我所知,您必须使用 $model->dsql->andExpr()。

    我猜你可以使用 addCondition(将该条件移动到 WHERE)或使用 DSQL 来实现。

    【讨论】:

    • 感谢您的快速回答!
    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多