【问题标题】:How do I JOIN many-to-many tables using NotORM如何使用 NotORM 加入多对多表
【发布时间】:2014-07-02 11:28:08
【问题描述】:

我正在学习 NotORM 来为学校制作一个简单的系统。我希望能够将“承诺”授予“学生”。这是我的数据结构:

我的桌子:

学生

  • -学生 (PK) -名 -姓 -出生日期 -vmg -年组

链接

  • -linkid (PK) -学生(FK) -pledgeid (FK) -timeofaward

承诺

  • -pledgeid (PK) -承诺名称 -pledgeinfo

来自伟大的 NotORM 教程 (http://www.sitepoint.com/database-interaction-made-easy-with-notorm/) 的代码说我应该这样做:

<?php
foreach ($books as $book) {
echo "<tr>";
echo "<td>" . $book["title"] . "</td>";
echo "<td>" . $book["author"] . "</td>";
// book_category table joins book and category
$categories = array();
foreach ($book->book_category() as $book_category) {
    $categories[] = $book_category->category["category"];
}
echo "<td>" . join(", ", $categories) . "</td>";
echo "</tr>";
}
?>
  1. 我的数据结构对于使用 NotORM 是否正确
  2. 如何翻译该示例以显示学生以及他们获得了哪些奖项。 - 我觉得我已经尝试了该代码的所有变体,但仍然无法正常工作。

非常感谢。

【问题讨论】:

  • 显示您的 3 个学生/质押表定义以及一些有效的查询和输出(包括选择每个表的所有内容)以及没有输出您想要的内容。

标签: php mysql sql relational-database notorm


【解决方案1】:

解决问题的关键:从关系表(此处为链接)开始并在 NotORM 上中继以加入其他表。

看看代码有多简单:

$db->link("pledge.name", $someName)->select("student.firstname, student.lastname");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多