2

選択の使用に問題があります。ドキュメントを読んでみましたが、あまり明確ではありません。それについて話しているフォーラムはほとんどなく、非アクティブです。

簡単な選択をしたいので、試しました:

$applications = $NOTORM->user_types()
                        ->select('id, group_title')
                        ->where('id', 1);
return $applications;

ただし、通常の実行時に得られる結果の行が表示されない NotORM オブジェクトが返されます。SELECT id, group_title FROM user_types WHERE id = 1

fetch() を使用してみましたが、使用方法がよくわかりません。洞察はありますか?

4

7 に答える 7

7

実際、NotORM の作成者が推奨する使用方法は次のとおりです。

<?php
array_map('iterator_to_array', iterator_to_array($result));
?>

幸運を!

于 2014-05-13T19:35:08.503 に答える
4

結果をループする必要があることに気付くまで、私は同じ問題を抱えていました。試す

foreach($applications as $application) {
     echo $application["id"] . ": " . $application["group_title"]
}

または、あなたが言及したようfetch()に、一度に1行ずつフェッチする which を使用できます。

$row=$applications->fetch();
echo $row["id"];

編集:

すべての行データを NotORM オブジェクトの代わりにプレーンな連想配列として取得するには、次の 2 つの手法に出くわしました。

  1. foreach($row as $key => $value) { $data[$key]=$value; }
  2. $data=iterator_to_array($row);- これを行う NotOrm 関数は見つけていませんが、Notorm がこの手法を内部 (どこか) で使用していることがわかりました。
于 2012-11-12T16:30:09.363 に答える
0

この PHP 関数を定義してみてください。

function getArray($obj){
  $arr = array();

  foreach ($obj as $objSingle) {

      $arrRow = array();
      foreach ($objSingle as $key => $value) {
          $arrRow[$key] = $value;
      }
      $arr[] = $arrRow;
  }
  return $arr;

}

そして、次のように呼び出して使用します。

$arr = getArray($applications);
于 2015-10-14T05:14:08.670 に答える
0

このコードを NotORM_Result クラス内のどこかに追加するだけです:

function result() { return (Object)$this->result_array(); }
function result_array() {
    foreach($this as $row) {    $ret[] = iterator_to_array($row);   }
    return $ret;
}

そして、次のように使用します。

    $applications = $NOTORM->user_types()
                            ->select('id, group_title')
                            ->where('id', 1);
    return $applications->result(); //To return it as an Plain Object
//or
   return $applications->result_array();  //To return it as a Assoc Array
于 2014-04-02T10:31:17.573 に答える
0

実際に行のデータ配列だけを取得するには、NotORM_Row->row パラメータにアクセスする必要がありますが、デフォルトでは「保護」されています。したがって、次のように使用します。

$row = $NOTORM->user_types()
              ->select('id, group_title')
              ->where('id', 1)
              ->fetch()->row;                //here is the magic :)

最初に「NotORM/Row.php」のコア NotORM_Row クラスを「ハック」する必要があります。

交換することで

protected $row, $result;

public $row, $result;

注:行データが配置されている NotORM_Row オブジェクトを返すため、NotORM の結果に対して fetch() を呼び出す必要があります。

于 2012-12-05T16:11:18.430 に答える