2

phpプロジェクトのORMとしてreadbeanphpを使用しています。追加のwhereclasueを使用してBeanをロードしようとしています。しかし、これを行う方法がわかりません。

通常、私は次のような「bean」を取得します。

$book = R::load('book', $id);

これは基本的に次のように言っています。

SELECT * FROM book WHERE id = '$id'

しかし、where句に別の条件を追加する必要があります。

SELECT * FROM book WHERE id = '$id' AND active = 1

redbeanphpでこれを行うにはどうすればよいですか?

4

3 に答える 3

4

R::find()そしてR::findOne()あなたが探しているものです:

$beans=R::find("books","active=? AND id=?",array(1,1));

または、単一の Bean のみが必要な場合:

$bean=R::findOne("books","active=? AND id=?",array(1,1));

R::find()複数の Bean をR::findOne()返しますが、単一の Bean のみを返します。

技術的には使用できますが、有効かどうかをテストするために Bean がロードされた後、R::load()PHP を使用してフィールドをチェックする必要があります。active

$bean=R::load("book",$id);
if($bean->active==1){//valid
   //do stuff
}else{//not valid
   //return error
}

お役に立てれば!

于 2012-04-15T14:45:09.753 に答える
1

RedBean_Facade::load主キーのみに使用しています。

複雑なクエリを使用して Bean を取得する場合

R::findお気に入り、

$needles = R::find('needle',' haystack = :haystack 
                                  ORDER BY :sortorder', 
    array( ':sortorder'=>$sortorder, ':haystack'=>$haystack ));

R::find についてもっと読む

http://www.redbeanphp.com/manual/finding_beans

getAll を使用して、パラメーターを使用してクエリを直接記述してみてください

R::getAll( 'select * from book where 
id= :id AND active = :act', 
array(':id'=>$id,':act' => 1) );

クエリの詳細については、

http://www.redbeanphp.com/manual/queries

于 2012-04-15T14:13:59.860 に答える
0

これらの答えは問題ありませんが、単純化できます。使用する必要があるのは次のとおりです。

$book = R::find('books', id =:id AND active =:active, array('id' => $id, 'active' => 1));

そして、標準の foreach を実行して、返されたデータの配列をループできます。

于 2013-03-07T21:18:20.350 に答える