2015-12-16 4 views
0

, похоже, не может понять это. У меня есть следующий кодLaravel 5 - петля над коллекцией

dd($this->project->dsReportingDoc->reportingDocUpload); 
if(!empty($this->project->dsReportingDoc->reportingDocUpload)) { 
    dd("TEST"); 
    foreach($this->project->dsReportingDoc->reportingDocUpload as $key){ 

    } 
} 

Теперь первый Dd распечатывает что-то вроде следующего

Collection {#274 ▼ 
    #items: array:2 [▼ 
    0 => ReportingDocUpload {#275 ▶} 
    1 => ReportingDocUpload {#276 ▶} 
    ] 
} 

Итак, есть два элемента в коллекции. Тем не менее, второй dd никогда не запускается, поэтому он никогда не должен вписываться в оператор if.

Если что-то в коллекции, мне нужно их закодировать и получить параметр. Поэтому мне нужно проверить, существует ли элемент первым.

Почему мое заявление if не работает здесь, когда оно не пусто?

Благодаря

ответ

0

Попробуйте

if($this->project->dsReportingDoc->reportingDocUpload) { 
    dd("TEST"); 
    foreach($this->project->dsReportingDoc->reportingDocUpload as $key){ 

    } 
} 

Что вы можете сделать, это, назначьте

$this->project->dsReportingDoc->reportingDocUpload 

переменной, поэтому вам не придется переписывать каждый где.

2

Функция отладки dd() прекращает выполнение текущего запроса. Поэтому вы можете вызвать его только один раз и получить выход - см. here.

По этой причине ваше состояние if и foreach не выполняются.