0

Redbean ORM をテストしています。私はそれがどのように機能するかが好きです. 著者とタイトルで新しい本を作成し、問題なくページに表示することができました。ページを自分の本にリンクする方法を学ぶために、別の次元を追加しました。

次のコードを使用して、book テーブルにエントリを追加したり、page テーブルにエントリを追加したりできます。

----------- 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->ownPage) を実行すると、phpmyadmin 経由でページ テーブルに明確に表示されるページ エントリさえ表示されません。上記のスクリプトを使用して pagetext フィールドにアクセスするさまざまな方法を試しましたが、どこにもアクセスできません。

どんな洞察も大歓迎です。それ以外の場合は、大きくて面倒ではありますが、別の ORM を試す必要があります。

前もって感謝します。

4

1 に答える 1

0

私はまだこの問題に遭遇していないので、100%確信はありませんが、私はほぼ肯定的で$book->ownPage、配列である必要があります:

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

$id = R::store($newBook);
于 2012-06-27T19:01:57.360 に答える