Хорошо .. Я не могу понять, как это могло произойти, но .. мой код
$parser->mpml->images()->where('order', $parser->figureCounter)->first()->getUrl()
не работал только вне вспомогательной функции dd()
.Выдает
Вызов функции-члена getUrl () при нулевой ошибке.
Внутри
dd($parser->mpml->images()->where('order', $parser->figureCounter)->first()->getUrl());
работает и выдает правильный URLстрока ...?Эта проблема действительно случилась неделю назад, она решила сама, даже я никогда ничего не делаю.Теперь это происходит снова.
Кто-нибудь, у кого есть подобный опыт, поделитесь своими знаниями?
У ошибки должна быть причина, и я не могу найти крошечную подсказку по этому вопросу.
class FigureSubparser extends Subparser {
public function start($attrs)
{
$this->attrs = $attrs;
try {
$order = $this->getEngine()->incFigureCounter()->getFigureCounter();
$url = $this->getEngine()->mpml->images()->where('order', $order)->first()->getUrl();
} catch (\Throwable $e) {
dd($e->getMessage());
}
return '<img src="'.$url.'"/>';
}
}
Выше продукции "Call to a member function getImageUrl() on null"
Однако, когда я непосредственно помещаю $url
часть в dd()
,
class FigureSubparser extends Subparser
{
public function start($attrs)
{
$this->attrs = $attrs;
// try {
$order = $this->getEngine()->incFigureCounter()->getFigureCounter();
// $mpmlimage = $this->getEngine()->mpml->images()->where('order', $order)->first()->getUrl();
// } catch (\Throwable $e) {
// dd($e->getMessage());
// }
dd($this->getEngine()->mpml->images()->where('order', $order)->first()->getUrl());
return '<img src="'.$url.'"/>';
}
}
В это время, dd()
распечатайте "http://localhost:8000/mpmlimages/NNYIPFxWz3TQGbtLJB2XEt9g8U8X370BarvRQ7oo.jpeg"
, что я и хотел.
и я прошу прощения за неправильный ответ, что моя версия laravel.Было 5.7.19, а не 5.4.
После решения .. Отчет.
Проблема действительно из цикла.
Во время обработки, потому что xml_parser
работает, управляемый событиями, каждый открытый тег делает еще один цикл.
Каждый раз, когда открытый тег является элементом FIGURE, мой пользовательский анализатор запускает FigureSubparser->start()
.
Проблема в том, если существует родительский объект, которыйне имеет записи изображения, так как я не проверял существование записи изображения, код возвращает ноль.