hook_commerce_cart_line_item_refresh()
を実装しています。コマースオーダーのラインアイテムとエンティティメタデータラッパーを受け取ります。
このようにユーザーオブジェクトを読み込まずに、メタデータラッパーから注文のユーザーIDを取得するにはどうすればよいですか
$uid = $order_wrapper->owner->value()->uid
上記の行では、ユーザーオブジェクトが読み込まれます。ユーザーオブジェクトの読み込みを避け、単にuidを直接取得したいと思います。
次の行は機能しません:
$uid = $order_wrapper->uid;
または、注文オブジェクトの読み込みを考えるべきですか?すでに静的キャッシュにある可能性があるため。
ありがとう
これは、メタデータラッパーの任意のプロパティと同じです。
$uid = $order_wrapper->uid->value();
または、注文オブジェクトの読み込みを考えるべきですか?
基になるエンティティなしでエンティティメタデータラッパーを作成することはできないため、参照しているオブジェクトは既に「読み込まれています」。あなたはそれを得ることができます
$order = $order_wrapper->value();
エンティティオブジェクトからuid
を取得する必要があります。
$uid = $order_wrapper->value()->uid;
多値エンティティ参照フィールドの場合、このパターンを使用して生の値を取得できます
$wrapper->field_multiple->raw()
これは次のような配列を返します:
array(0 => 123, 1 => 456)