簡體   English   中英

Zend_Db-如何使用Zend_Db_Table_Select的結果

[英]Zend_Db - How to use results from Zend_Db_Table_Select

在當前項目中,我不得不使用Zend-Framework,但是我只能停留在特定的位置。 不幸的是,該框架的文檔太糟糕了,目前對我沒有任何幫助。 該解決方案可能非常簡單,但我無法自行解決。

我只是想從我的數據庫中獲取一些東西,我嘗試使用以下代碼來實現:

BS_Model_Subshops.php:

class BS_Model_Subshops extends BS_Lib_Model
{
    protected $_name = 'shops';
    protected $_username = '';
    protected $_password = '';
    protected $_primary = 'id';
}

LoginController.php:

public function authAction() {
    $shop= new BS_Model_Subshops();
    $id= filter_var($this->getRequest()->getPost('id'));
    $db_content= $shop->select()->where('id= '.$id);
    Zend_Debug::dump($db_content);

    ... more code ...
}

結果,我得到以下對象(警告:傳入大量對象):

object(Zend_Db_Table_Select)#85 (7) {
["_info":protected] => array(10) {
    ["schema"] => NULL
    ["name"] => string(5) "shops"
    ["cols"] => array(8) {
        [0] => string(2) "id"
      [1] => string(4) "name"
      [2] => string(8) "css_path"
      [3] => string(3) "mmz"
      [4] => string(17) "order_information"
      [5] => string(11) "code_suffix"
    }
    ["primary"] => array(1) {
        [1] => string(2) "id"
    }
    ["metadata"] => array(8) {
        ["id"] => array(14) {
            ["SCHEMA_NAME"] => NULL
        ["TABLE_NAME"] => string(5) "shops"
        ["COLUMN_NAME"] => string(2) "id"
        ["COLUMN_POSITION"] => int(1)
            ["DATA_TYPE"] => string(3) "int"
        ["DEFAULT"] => NULL
        ["NULLABLE"] => bool(false)
            ["LENGTH"] => NULL
        ["SCALE"] => NULL
        ["PRECISION"] => NULL
        ["UNSIGNED"] => bool(true)
            ["PRIMARY"] => bool(true)
            ["PRIMARY_POSITION"] => int(1)
            ["IDENTITY"] => bool(true)
      }
      ["name"] => array(14) {
            ["SCHEMA_NAME"] => NULL
        ["TABLE_NAME"] => string(5) "shops"
        ["COLUMN_NAME"] => string(4) "name"
        ["COLUMN_POSITION"] => int(2)
            ["DATA_TYPE"] => string(7) "varchar"
        ["DEFAULT"] => NULL
        ["NULLABLE"] => bool(false)
            ["LENGTH"] => string(2) "60"
        ["SCALE"] => NULL
        ["PRECISION"] => NULL
        ["UNSIGNED"] => NULL
        ["PRIMARY"] => bool(false)
            ["PRIMARY_POSITION"] => NULL
        ["IDENTITY"] => bool(false)
      }
      ["css_path"] => array(14) {
            ["SCHEMA_NAME"] => NULL
        ["TABLE_NAME"] => string(5) "shops"
        ["COLUMN_NAME"] => string(8) "css_path"
        ["COLUMN_POSITION"] => int(3)
            ["DATA_TYPE"] => string(7) "varchar"
        ["DEFAULT"] => NULL
        ["NULLABLE"] => bool(false)
            ["LENGTH"] => string(3) "100"
        ["SCALE"] => NULL
        ["PRECISION"] => NULL
        ["UNSIGNED"] => NULL
        ["PRIMARY"] => bool(false)
            ["PRIMARY_POSITION"] => NULL
        ["IDENTITY"] => bool(false)
      }
      ["mmz"] => array(14) {
            ["SCHEMA_NAME"] => NULL
        ["TABLE_NAME"] => string(5) "shops"
        ["COLUMN_NAME"] => string(3) "mmz"
        ["COLUMN_POSITION"] => int(4)
            ["DATA_TYPE"] => string(14) "float unsigned"
        ["DEFAULT"] => NULL
        ["NULLABLE"] => bool(false)
            ["LENGTH"] => NULL
        ["SCALE"] => NULL
        ["PRECISION"] => NULL
        ["UNSIGNED"] => bool(true)
            ["PRIMARY"] => bool(false)
            ["PRIMARY_POSITION"] => NULL
        ["IDENTITY"] => bool(false)
      }
      ["order_information"] => array(14) {
            ["SCHEMA_NAME"] => NULL
        ["TABLE_NAME"] => string(5) "shops"
        ["COLUMN_NAME"] => string(17) "order_information"
        ["COLUMN_POSITION"] => int(5)
            ["DATA_TYPE"] => string(4) "text"
        ["DEFAULT"] => NULL
        ["NULLABLE"] => bool(false)
            ["LENGTH"] => NULL
        ["SCALE"] => NULL
        ["PRECISION"] => NULL
        ["UNSIGNED"] => NULL
        ["PRIMARY"] => bool(false)
            ["PRIMARY_POSITION"] => NULL
        ["IDENTITY"] => bool(false)
      }
      ["code_suffix"] => array(14) {
            ["SCHEMA_NAME"] => NULL
        ["TABLE_NAME"] => string(5) "shops"
        ["COLUMN_NAME"] => string(11) "code_suffix"
        ["COLUMN_POSITION"] => int(6)
            ["DATA_TYPE"] => string(7) "varchar"
        ["DEFAULT"] => NULL
        ["NULLABLE"] => bool(false)
            ["LENGTH"] => string(1) "6"
        ["SCALE"] => NULL
        ["PRECISION"] => NULL
        ["UNSIGNED"] => NULL
        ["PRIMARY"] => bool(false)
            ["PRIMARY_POSITION"] => NULL
        ["IDENTITY"] => bool(false)
      }
  ... more unimportant stuff here ...

現在,例如,我只想要名稱或CSS路徑。 我如何獲得其中之一? 盡管我以前曾與laravel一起工作,但我對Zend並不是很熟悉,並且由於它是如此復雜且沒有示例的良好文檔,因此我在理解它方面遇到了很大的問題。

如果重要的話,Web服務器將使用PHP 5.4和Zend-Framework 1.9。

您可以使用fetchAll來獲取名稱或CSS路徑

嘗試下面的代碼。

public function authAction() {
    $shop= new BS_Model_Subshops();
    $id= filter_var($this->getRequest()->getPost('id'));
    $db_content = $shop->select()->where('id= '.$id);
    $result = $db_content->query()->fetchAll();
    foreach($result as $key=>$value){   
        echo "Name : ". $value->name;
        echo "</br>";
        echo "Css Path : ". $value->css_path;
    }
    Zend_Debug::dump($db_content);

    ... more code ...
}

您還可以使用rowset對象的toArray方法將一個rowset檢索為一個Array。

$result = $db_content->query()->fetchAll();
$row_array = $result->toArray();

問候,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM