Попытка получить свойство необъекта, когда массив используется два раза в цикле for-each Laravel - PullRequest
0 голосов
/ 14 мая 2018

Я передал данные из контроллера в представление, как вы можете видеть:

    public function ViewDemmandes(){
  $listdemmande = Demmande::orderBy('created_at', 'DESC')->paginate(5);
  $listvillee=Ville::all();
  $listcategorie=Categorie::all();
  $listepublic=Publiccibles::all();
  $villes = $listvillee;
  $demmande = $listdemmande;
  $categorie = $listcategorie;
  $pulics=$listepublic;
  return view("demmande.demmandes",compact('listepublic','demmande','villes','categorie'));
}

Я пытался использовать $cateoriein в двух частях моего кода.

           <select   id="selectType" class="form-control">
            @foreach ($categorie as $categorie )
              <option value= {{$categorie->id}} >{{$categorie->nom}</option>
            @endforeach
          </select> 

и

                      <li><i class="material-icons">lightbulb_outline</i> 
                      Type :
                       @foreach($categorie as $type)
                        {{$type->nom}}
                       @endforeach
                     </li>

для первого он работает нормально, но во второй я получил эту ошибку

Trying to get property of non-object (View: C:\wamp\www\project\resources\views\demmande\demmandes.blade.php)

Какую ошибку я допустил?

1 Ответ

0 голосов
/ 14 мая 2018

Прежде всего, я думаю, что было бы лучше, чтобы ваш код всегда читался.Таким образом, другие люди смогут лучше понять это.

Проблема здесь связана с именами ваших переменных.Вы перезаписываете значения, потому что вы используете одно и то же имя переменной для массива и значения.

Пример:

$category = ['a', 'b', 'c'];

var_dump($category); // array (3) { [0] => "a", [1] => "b", [2] => "c"}

foreach ($category as $category) { // array and value variable name are the same
    echo $category; // This echos a, b and c
}

var_dump($category); // string (1) "c"

Как видно из цикла foreach, $categoryпеременная имеет последнее значение вашего массива.

Простым исправлением будет переименование одной из переменных в foreach:

$categories = ['a', 'b', 'c']; // Different name (plural of category)

var_dump($categories); // array (3) { [0] => "a", [1] => "b", [2] => "c"}

foreach ($categories as $category) { // array and value variable name are different
    echo $category; // This echos a, b and c
}

var_dump($categories); // array (3) { [0] => "a", [1] => "b", [2] => "c"}

На этот раз $categories все еще имеет то же значение, что и раньшеforeach и может быть снова зациклен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...