web-dev-qa-db-ja.com

注文エンティティメタデータラッパーから注文のユーザーIDを取得する方法

hook_commerce_cart_line_item_refresh()を実装しています。コマースオーダーのラインアイテムとエンティティメタデータラッパーを受け取ります。

このようにユーザーオブジェクトを読み込まずに、メタデータラッパーから注文のユーザーIDを取得するにはどうすればよいですか

$uid = $order_wrapper->owner->value()->uid

上記の行では、ユーザーオブジェクトが読み込まれます。ユーザーオブジェクトの読み込みを避け、単にuidを直接取得したいと思います。

次の行は機能しません:

$uid = $order_wrapper->uid;

または、注文オブジェクトの読み込みを考えるべきですか?すでに静的キャッシュにある可能性があるため。

ありがとう

4
Junaid

これは、メタデータラッパーの任意のプロパティと同じです。

$uid = $order_wrapper->uid->value();

または、注文オブジェクトの読み込みを考えるべきですか?

基になるエンティティなしでエンティティメタデータラッパーを作成することはできないため、参照しているオブジェクトは既に「読み込まれています」。あなたはそれを得ることができます

$order = $order_wrapper->value();
8
Clive

エンティティオブジェクトからuidを取得する必要があります。

$uid = $order_wrapper->value()->uid;
2
manish_s

多値エンティティ参照フィールドの場合、このパターンを使用して生の値を取得できます

$wrapper->field_multiple->raw()

これは次のような配列を返します:

array(0 => 123, 1 => 456)
0