这是我对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...";
?>
答案 0 :(得分:1)
实际问题似乎是您的表'primary_id与NotORM标准约定不匹配。解决此问题的最简单方法是将budgetinfo
的{{1}}更改为entryid
,并将id
更改为userid
。这样您就可以使用NotORM的方法来提示关系。
如果您具有在MySQL中定义的关系,则可以使用自动发现功能来获取关系结构。
user_id
声明$structure = new NotORM_Structure_Discovery($pdo, $cache = null, $foreign = '%s');
时,为new NotORM($pdo)
添加其他参数。
如果您没有在MySQL中定义的关系,那么您将陷入深深的麻烦,因为我只能指出您应该访问http://www.notorm.com/#identifiers来帮助您。看看该地区:
$structure