Я пытаюсь закодировать приложение, в котором есть несколько «Местоположений», которые пользователи могут добавлять в избранное. У меня есть модель для Locations, модель для Избранного и таблица базы данных, где я регистрирую пары user_id и location_id, чтобы указать любимые местоположения пользователя.
В моей модели Location я определил следующие отношения hasMany:
public function favorites(){
return $this->hasMany(Favorite::class);
}
Я также определил обратное отношение в избранной модели следующим образом:
public function location(){
return $this->belongsTo(Location::class);
}
Затем в представлении я пытаюсь получить список всех местоположений и отметить те, которые пользователь отметил как избранные. Для этого я перебираю все местоположения и пытаюсь подсчитать, сколько фаворитов у этого места. Это должно быть либо 1, либо 0, поскольку строка комбинации user_id / location_id существует только в том случае, если у пользователя определенное местоположение как hi favourite.
Вот соответствующая часть кода (я передаю список мест для просмотра):
@foreach ($Locations_List as $Location)
{{ $Location->favorites()->get()->count }}
@endforeach
Вот как я передаю список $ Locations_List:
public function Create_SearchResults(){
$Locations_List = Location::select('id', 'Name', 'Category', 'Logo', 'Status', 'Address_Number', 'Address_Street', 'Address_City', 'Updated_At')
->where('Status', '>=', 500)
->get();
return view('Location_Search/Index', compact('Locations_List'));
}
Однако, когда я пытаюсь выполнить вышеизложенное, я получаю «Свойство [количество] не существует в этом экземпляре коллекции».
Я попытался сделать что-то похожее на выше в тинкере, и это работает. Тем не менее, мне пришлось разрешить его «массив» следующим образом:
$loc = App\Location::find(2);
$loc->favorites()->get()->count();
Как мне преодолеть проблему с «массивом» в представлении? Заранее спасибо