2016-07-03 10 views
0

WooCommerce(WordPress)の顧客をオブジェクトにロードしたいのですが、WooCommereceはデータとデータの名前/識別子の両方を格納するために行を使用します。MySQL:1つのMySQLクエリで行ベースのデータをオブジェクトにロードしますか?

Joomlaからは、情報を取得するために列を選択するだけでした。だから、私はいくつかのPHPを使用しなければならなかったので、私のSQLはWooCommerceで作業するときに少し長くなりました。

これは動作していますが、どういうわけか、PHPを最後に使用する代わりに1つのSQLクエリに変換できますか?

$query = " 
SELECT 
    meta_key, meta_value 
FROM 
    wp_postmeta 
WHERE 
    post_id = ".$order->order_id; 

$db->setQuery($query); 
$rows = $db->loadRowList(); 
$result = new stdClass(); 

if (!empty($rows)) { 
foreach ($rows as $row) { 

    if (!empty($row[0] == "_customer_user")) { 
     $result->customer_id = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_first_name")) { 
     $result->name = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_last_name")) { 
     $result->name = $result->name . " ".$row[1]; 
    } 

    if (!empty($row[0] == "_billing_company")) { 
     $result->company = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_address_1")) { 
     $result->address = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_address_2")) { 
     $result->address = $result->address. "\n" . $row[1]; 
    } 

    if (!empty($row[0] == "_billing_postcode")) { 
     $result->postalcode = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_city")) { 
     $result->city = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_country")) { 
     $result->country = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_email")) { 
     $result->email = $row[1]; 
    } 

    if (!empty($row[0] == "_billing_phone")) { 
     $result->phone = $row[1]; 
    } 
} 
} 
+0

これは単一のSQLクエリですので、私は本当にあなたの質問を理解していません! – Shadow

答えて

0

ワードプレスは、ほとんどのシステムとは異なるものを保存しています。 他のシステムのオブジェクトは、多くの属性(col)を持つ1つのテーブルの行全体を表します。 WordPressの属性では、最初のcolがattribute-nameで、2つ目がattribute-valueであるcolsがはるかに少ないテーブルに多くの行が保存されます。 WordPressの別のシステムの1つの行に対して、行がたくさんあり、論理的な組み合わせはシステム(WP)のみに依存しますが、データベース設計には依存しません。したがって、私はちょうどSQLによってあなたの質問を解決する方法を表示されません。

関連する問題