(Redbean)无法访问链接表值

时间:2012-06-27 02:29:33

标签: php orm redbean

我正在测试Redbean ORM。我喜欢它是如何工作的,对我来说工作少了:)我正在使用他们网站上的redbean书籍示例。我已经能够创建包含作者和标题的新书,并且可以毫无问题地将它们显示在页面上。我添加了另一个维度来学习如何将页面链接到我的书籍。

我可以在book表中添加一个条目,并使用以下代码在页面表中添加一个条目:

----------- dbmgmt.php ---------------------------------

function AddNewBook($FORMINFO){
   $newBook = R::dispense('book');
   $newBook->title = $FORMINFO['title'];
   $newBook->author = $FORMINFO['author']; 
   $newBook->create_date = R::isoDateTime();

   $newPage = R::dispense('page');
   $newPage->pagetext = $FORMINFO['pagetext'];
   $newBook->ownPage = $newPage; 

   $id = R::store($newBook);

   return R::load('book', $id);
}

两个表都显示正确的条目(新的ID和填充的字段)。但是,我很难从页表中访问pagetext字段。这是我一直在使用的代码:

----------- dbmgmt.php ---------------------------------

function GetBooks($id){
  if($id == ""){
     return R::find('book');
  }
  else{
     return R::find('book','id = ?', array($id));
  }
}

----------- GetBooks.php ---------------------------------

 $id = "";
 if(isset($_GET['id'])){
   $id = $_GET['id'];
 }

 $books = GetBooks($id);
 $booklist = "";

 foreach($books as $book){
    $pagetext = "";

    foreach($book->ownPage as $page){
         $pagetext .= $page->pagetext;   //Errors with "Notice: Trying to get property of non-object"
    }

    $booklist .=  "<tr id='$book->id'><td><a class='linkEdit' href='edit.php?id=$book->id'><img src='http://cdn1.iconfinder.com/data/icons/ledicons/page_white_edit.png' /></a> <span class='book-title'>$book->title</span></td><td><span class='book-author'>$book->author</span></td><td><span class='page-text'>$pagetext</span></td></tr>";    
 }

 echo $booklist;
 ------------------------------------------------------------

当我print_r($ book-&gt; ownPage)时,我甚至看不到我可以通过phpmyadmin在页面表中清楚看到的页面条目。我已经通过上面的脚本尝试了许多不同的方式来访问pagetext字段,但无法随身携带它。

任何见解都会受到欢迎。否则,我将不得不尝试一种不同的,虽然更大,更麻烦的ORM。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我不是百分百肯定,因为我自己还没有遇到过这个问题,但我几乎是肯定的,$book->ownPage需要成为一个数组:

$newPage = R::dispense('page');
$newPage->pagetext = $FORMINFO['pagetext'];
$newBook->ownPage[] = $newPage; 

$id = R::store($newBook);