получить вложенное значение из объекта в красноречивой коллекции

Я использую кассу Laravel в сочетании с полосой & из коллекции Invoices и я пытаюсь получить конкретный счет-фактуру по его subscription ключ:

Collection {#157 ▼
#items: array:1 [▼
0 => Invoice {#162 ▼
#owner: User {#163 ▶}
#invoice: Invoice {#208 ▼
+"id": "in_1BsZF2F3eLup6dYnvs74ij6B"+"object": "invoice"...
+"statement_descriptor": null
+"subscription": "sub_CH7UxbgcTCeHLp"+"subtotal": 1999
+"tax": null
+"tax_percent": null
+"total": 1999
+"webhooks_delivered_at": 1517934260
}
}
]
}

Вот функция, используемая user модель для извлечения этой коллекции его Invoices :

public function invoices($includePending = false, $parameters = [])
{
$invoices = [];

$parameters = array_merge(['limit' => 24], $parameters);

$stripeInvoices = $this->asStripeCustomer()->invoices($parameters);

// Here we will loop through the Stripe invoices and create our own custom Invoice
// instances that have more helper methods and are generally more convenient to
// work with than the plain Stripe objects are. Then, we'll return the array.
if (! is_null($stripeInvoices)) {
foreach ($stripeInvoices->data as $invoice) {
if ($invoice->paid || $includePending) {
$invoices[] = new Invoice($this, $invoice);
}
}
}

return new Collection($invoices);
}

каждый Invoice объект имеет два свойства, Owner(текущий пользователь) и фактический Invoice

каков правильный синтаксис для каждого Invoices subscription ключ и проверить это значение?

Я попытался следующий запрос, и это привело к NULL :

$user->invoices()->where('subscription','sub_CH7UxbgcTCeHLp')->first();

ОБНОВИТЬ

когда я дам дамп следующего запроса $user->invoices()->first()->subscription возвращает правильную строку в sub_CH7UxbgcTCeHLp Однако, когда я пытаюсь проверить это с помощью $user->invoices()->firstWhere('subscription', 'sub_CH7UxbgcTCeHLp') его результаты в NULL

1

Решение

Попробуйте следующее:

$id = 'sub_CH7UxbgcTCeHLp'
$user->invoices->first(function ($invoice) use ($id) {
return $invoice->invoice->subscription === $id;
});

Похоже, что вы просто пропускаете вложенное свойство счета в фактическом объекте счета в вашей попытке с помощью где. Это может работать:

$id = 'sub_CH7UxbgcTCeHLp';
$user->invoices()->where(function ($query) use ($id) {
$query->where('invoice.subscription', $id);
})->first();
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector