#php #laravel #laravel-blade
Вопрос:
Немного странная проблема, я, вероятно, упускаю что-то очевидное.
У меня есть следующий объект:
AppModelsCategory {#2253 ▼
guarded: []
timestamps: false
#connection: "mysql"
#table: "categories"
#primaryKey: "id"
#keyType: "int"
incrementing: true
#with: []
#withCount: []
#perPage: 15
exists: true
wasRecentlyCreated: false
#attributes: array:8 [▶]
#original: array:8 [▶]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: array:3 [▼
"children" => IlluminateDatabaseEloquentCollection {#2254 ▶}
"translations" => IlluminateDatabaseEloquentCollection {#2212 ▶}
"actions" => IlluminateDatabaseEloquentCollection {#2257 ▼
#items: array:8 [▶]
}
]
#touches: []
#hidden: []
#visible: []
#fillable: []
]
В блейде отношение (в данном случае «действия») вызывается динамически в цикле с использованием массива $type
, который в этом случае возвращает actions
, а затем возвращает счетчик.
{{-- @dd($parent_category->{$type['name']}->count()) --}}
{{$parent_category->{$type['name']}->count()}}
В моем понимании это должно полностью сработать, за исключением того, что это приводит к ошибке: Call to a member function count() on null
Странно то, что если я проверю это с помощью комментария @dd, он полностью работает и возвращается 8
, как и должен!
Также, если я просто напишу, {{$parent_category->actions->count()}}
это тоже сработает.
Я не понимаю, почему Блейд не соглашается {$type['name']}
.
Ответ №1:
Как я понимаю, вы выполняете dd в цикле, и он возвращает 8 в первом цикле, но вы получаете ошибку при запуске кода без dd. Это означает, что иногда $parent_category->{$type['name']}
значение равно нулю, и вы пытаетесь рассчитывать на нуль.
Может быть, вы можете попробовать с дополнительным():
{{optional($parent_category->{$type['name']})->count()}}
Например, когда он равен нулю, он не будет пытаться считать, и вы больше не получите ошибку.