0

OK、これは簡単なはずですが、ぐるぐる回っています。2 つのテーブルがあり、それぞれクエリを実行する 2 つの関数があります。最初の関数は製品を取得し、2 番目の関数は製品の画像を取得します。

製品である配列を取得したいのですが、それは画像です...

これが私のコードです...

/**
 * Gets the requested product from the DB
 * 
 * @param string $productUrl
 * @param string $productID
 */
private function _db_get_product($productUrl = null, $productID = null) {

    if (empty($productUrl) && empty($productID))
        return;

    $db = $this->getConnection();
    $q = "SELECT " . $this->_leaf_sql_fields() . 
            " FROM content_products_items pr WHERE pr.productStatus >= "
            . menuMachine::getMinimumStatus() . " ";

    if (!empty($productUrl))
        $q .= " AND productUrl = '" . $productUrl . "'";

    if (!empty($productID))
        $q .= " AND productID = '" . $productID . "'";

    if ($res = $db->recordsetSingle($q))
        $this->_product = $res;

    return $res;
}

/**
 * Get the images for the product
 * @return array
 */
private function _db_get_product_images($productID) {

    $db = $this->getConnection();

    $q = "SELECT * FROM content_products_images WHERE productID = '" . $productID . "'";

    $this->_productImages = $db->recordset($q);

}
4

2 に答える 2

0

ここStackOverflowで誰かに答えようとする最初の試みなので、我慢してください...しかし、以下はあなたが探しているものだと思いますか?

$product = array('product' => _db_get_product($URL, $ID), 'images' => _db_get_product_images($ID));

別の方法として、すべてを一度に実行したいが、他に 2 つの個別のメソッドが必要ない場合は、_db_get_product メソッドを次のように書き直すことができます。

private function _db_get_product($productUrl = null, $productID = null) {

    if (empty($productUrl) && empty($productID))
        return;

    $output = array();
    $db = $this->getConnection();
    $q = "SELECT " . $this->_leaf_sql_fields() . 
        " FROM content_products_items pr WHERE pr.productStatus >= "
        . menuMachine::getMinimumStatus() . " ";

    if (!empty($productUrl))
        $q .= " AND productUrl = '" . $productUrl . "'";

    if (!empty($productID))
        $q .= " AND productID = '" . $productID . "'";

    if ($res = $db->recordsetSingle($q))
        array_push($output, $res);

    $q2 = "SELECT * FROM content_products_images WHERE productID = '" . $productID . "'";
    array_push($output, $db->recordset($q2));

    return $output;
}
于 2013-03-19T11:21:46.937 に答える
0

同じ関数内で 2 つを組み合わせるクエリを探しているだけですか?

//Basic query, improve it according to your needs

SELECT 
*
FROM
content_products_items  as p,
content_products_images as i
WHERE
p.productID = $productId AND
i.productID = p.productID;

または、両方の関数を呼び出して結果を配列に結合する方法はありますか?

$myProduct = array(
    'productData'   => $this->_db_get_product($productUrl, $productID),
    'productImages' => $this->_db_get_product_images($productID),
);

両方とも、あなたを仕事の方向に導くはずです。

于 2013-03-19T11:17:47.727 に答える