#php #laravel #collections #laravel-8
Вопрос:
Я следую инструкции по созданию клона instagram с помощью Laravel. В конце концов я начал вносить некоторые свои собственные изменения.
Я пытаюсь получить заголовок и изображение профиля пользователя из PostsController. Теперь я могу успешно получить название профиля, но я хочу получить изображение того же профиля, что я не могу сделать. Я использую изображение Вмешательства.
Это мой постконтроллер
public function index()
{
$users = auth()->user()->following()->pluck('profiles.user_id');
$posts = Post::whereIn('user_id', $users)->latest()->paginate(5);
$newUsers = Profile::all('id', 'title', 'image')->sortDesc();
// $newUsersImage = Image::make(public_path("storage/{$newUsers->image}"))->orientate()->fit(100, 100);
dd($newUsers->image);
return view('posts.index', compact('posts', 'newUsers'));
}
когда я определяю новых пользователей, это дает следующие результаты:
IlluminateDatabaseEloquentCollection {#469 ▼
#items: array:13 [▼
12 => AppModelsProfile {#1451 ▼
#fillable: array:4 [▶]
#connection: "mysql"
#table: "profiles"
#primaryKey: "id"
#keyType: "int"
incrementing: true
#with: []
#withCount: []
preventsLazyLoading: false
#perPage: 15
exists: true
wasRecentlyCreated: false
#attributes: array:3 [▶]
#original: array:3 [▶]
#changes: []
#casts: []
#classCastCache: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▶]
}
11 => AppModelsProfile {#1443 ▶}
10 => AppModelsProfile {#1437 ▶}
9 => AppModelsProfile {#1454 ▶}
8 => AppModelsProfile {#1452 ▶}
7 => AppModelsProfile {#1419 ▶}
6 => AppModelsProfile {#1442 ▶}
5 => AppModelsProfile {#1461 ▶}
4 => AppModelsProfile {#1459 ▶}
3 => AppModelsProfile {#1433 ▶}
2 => AppModelsProfile {#1455 ▶}
1 => AppModelsProfile {#1411 ▶}
0 => AppModelsProfile {#1410 ▶}
]
}
Но когда я добавляю $newUsers->image, он говорит: Свойство исключения [изображение] не существует в этом экземпляре коллекции.
Но, на мой взгляд, я получаю адрес, используя тот же $newUsers->изображение.
Извините за мой язык, и если я не могу объяснить лучше, я очень новичок в php и laravel.
Комментарии:
1. Это связано с тем, что у $newUsers более одного профиля, это набор профилей. Сначала вам нужно выбрать профиль, сделав что-то вроде
foreach ($newUsers as $profile) { echo $profile->image; });
Ответ №1:
Это потому, что возврат из $newUsers = Profile::all('id', 'title', 'image')->sortDesc();
массива
Вы рассматриваете его как отдельный экземпляр профиля.
пробовать dd($newUsers[0]->image)
Предполагая, что модель имеет столбец изображения, она должна работать
Комментарии:
1. спасибо, что проблема решена, мне нужно было просмотреть коллекцию.
Ответ №2:
Из того, что я вижу в коде, я думаю, что $newUsers-это коллекция, а не одна модель. Это означает, что это коллекция моделей.
В коллекции нет изображения, но у каждого элемента в коллекции есть одно изображение.
Просто сделайте цикл для каждого из них, и вы получите изображение объекта профиля и экземпляра модели.
foreach ($newUsers as $profile) {
dd($profile->image);
}
Комментарии:
1. Спасибо… Мне нужно было просмотреть коллекцию, идея была упущена… проблема решена
2. Рад помочь 🙂