【问题标题】:NotORM foreign key data not picked upNotORM 外键数据未拾取
【发布时间】:2013-12-11 04:45:59
【问题描述】:

这是我第一次介绍 NotORM,我无法打印外键数据。这是我的表格:

**userinfo**
id , int (primary key, autoincrement)
username , varchar(50)
gender , varchar(6)
password , varchar(50)

**budgetinfo**
entryid , int (primary key, autoincrement)
userid int references userinfo(id)
amount , varchar(50)
entrydate , varchar(6)

这是我的 NotORM 代码:

<?php

require "NotORM.php";

$dsn = "mysql:dbname=budget;host=127.0.0.1";
$pdo = new PDO ( $dsn, "root", "root" );
$budgetdb = new NotORM ( $pdo );
?>

代码列出了记录但没有打印budgetinfo条目。

我哪里出错了?

<br/><br/>
<hr/>
Listing records, userinfo(id) => pk , budgetinfo(userid) => fk
<hr/>

<?php 
$userinfos = $budgetdb->userinfo();

if(isset($userinfos) && count($userinfos)>0){
    foreach ( $userinfos as $userinfo ) {
        echo $userinfo ["username"] . " " . $userinfo ["gender"] . "<br/>";

        $budgets = $userinfo->budgetinfo();

        if(isset($budgets) && count($budgets)>0){
            foreach ($budgets as $budget)
                echo $budget->budgetinfo["amount"] . " , " . $budget->budgetinfo["entrydate"] . "<br/>";
        }
        else
            echo "No budgets set...";

        echo "<br/>-------------------------------<br/>";
    }
}
else
    echo "No record found...";
?>

【问题讨论】:

    标签: php notorm


    【解决方案1】:

    实际问题似乎是您的表的 primary_id 与 NotORM 标准约定不匹配。解决此问题的最简单方法是将budgetinfoentryid 更改为简单的id 并将userid 更改为user_id。这样你就符合了 NotORM 提示关系的方法。

    如果您在 MySQL 中定义了关系,则可以使用自动发现功能来获取关系结构。

    $structure = new NotORM_Structure_Discovery($pdo, $cache = null, $foreign = '%s');
    

    声明new NotORM($pdo) 时,为$structure 添加一个附加参数。

    如果您没有在 MySQL 中定义的关系,那么您就有很大的麻烦,因为我只能指出您应该访问http://www.notorm.com/#identifiers 来帮助您。看区域:

    class UserStructure extends NotORM_Structure_Convention {
        function getReferencedTable($name, $table) {
            if ($name == "created_by" || $name == "modified_by") {
                return "user";
            }
            return parent::getReferencedTable($name, $table);
        }
    }
    
    $structure = new UserStructure;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2014-08-31
      • 1970-01-01
      • 2018-07-14
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多