Изменяя направление объединения таблиц, вы можете загружать только пользователей и группы, связанные с Payment
:
class Payment < ApplicationRecord
belongs_to :paymentable, polymorphic: true
belongs_to :user, -> { where(payments: { paymentable_type: 'User' }) }, foreign_key: 'paymentable_id'
end
Payment.includes(user: :group).each do |payment|
...
end
Просто тест для него с isset, например.
if (!empty($aka)) {
foreach ($aka as $ak) {
if(isset($ak["lang"]) && ($ak["lang"]=="es")) {
$sptitle=$ak["title"];
}
}
}
Если Вы будете не знать, как булев оператор как && может быть сорван, если первый операнд будет ложью, то второй операнд не будет оценен. Вы будете часто видеть эту идиому, используемую в проверке availablilty чего-то прежде, чем действовать на него во втором операнде.
Вы могли также использовать array_key_exists ('Ленг', $aka) вместо isset, он имеет немного отличающуюся семантику, хотя - он возвратит true, если элемент будет установлен на null
, whereis isset возвратил бы false.
Интересно, isset по крайней мере дважды с такой скоростью, как array_key_exists, возможно вследствие того, что это - конструкция языка, а не вызов регулярной функции.
было бы неправильно использовать:
if (@$ak['lang'])
я действительно скучаю по тому факту, что мы до сих пор не можем делать 2 проверки в 1, так что
if ($ak['lang'])
это была одна из прекрасных особенностей PHP, и я просто не см. цель предупреждения о том, инициализирован ли ключ массива на временном языке сценариев, таком как PHP.
Я не уверен, куда идут разработчики PHP. лично меня немного беспокоит, что они превращают PHP во что-то еще. просто оставь это в покое. было здорово.