Хобрук: Ваш путь к мастерству в программировании

Отношения Laravel не работают должным образом

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

Comment Model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
  public function user()
  {
    return $this->belongsTo('User::class');
  }
}

Модель пользователя

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    public function comments()
    {
      return $this->hasMany(Comment::class);
    }
}

И это контроллер, в котором я пытаюсь вернуть результаты

<?php

namespace App\Http\Controllers;
use App\Comment;
use App\User;
use Auth;
use Illuminate\Http\Request;

class HomeController extends Controller
{

    public function index()
    {
      $comments = Comment::all();
      $user = Auth::user();
      $test = User::all();
      $average = number_format((Comment::avg('rating')),2, '.', '');
      dd($comments->user);
      return view('welcome')->withComments($comments)->withUser($user)->withAverage($average);

    }
}

Каждый раз, когда я пытаюсь выполнить DD-результат, я получаю сообщение об ошибке
Свойство [пользователь] не существует в этом экземпляре коллекции.

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


  • return $this-›belongsTo('Пользователь::класс'); должно быть возвращено $this-›belongsTo(User::class); или вернуть $this-›belongsTo('App\Models\User'); 13.12.2017
  • также $comments представляет собой набор объектов, поэтому вам необходимо получить доступ к пользователю для каждого объекта. Попробуйте $comments-›each(function($value){ dump($value-›user-›name; }); 13.12.2017
  • Если вам нужны только комментарии текущего пользователя, \Auth::user()-›comments; Здесь вы должны были получить подсказку: Свойство [пользователь] не существует в этом экземпляре коллекции. 13.12.2017

Ответы:


1

Вы пытаетесь получить свойство коллекция, а не объект. Итак, сделайте следующее:

foreach ($comments as $comment) {
    dump($comment->user); // $comment is an object
}
13.12.2017
Новые материалы

Пожалуй, лучший пост, который я читал за последнее время.
Пожалуй, лучший пост, который я читал за последнее время. Мне за 30, и я могу относиться к большей части истории. Действительно отличные идеи, которые помогли мне снова сосредоточиться на..

100 дней кода машинного обучения — День 097
Подведение итогов дня 096 В дни 095 и 096 мы говорили о том, как мы слышим звук в пространстве: время интерауральной задержки, передаточная функция, связанная с головой, а также мы говорили..

Какова ваша «история данных»?
Представление концепций продуктов для данных и машинного обучения заинтересованным сторонам и руководству Все любят данные. Все любят говорить, как будто понимают данные. Всем нравится..

Все, что вам нужно знать о «Внимании» и «Трансформерах» — Углубленное понимание — Часть 2
Внимание, Самостоятельное внимание, Многоголовое внимание, Маскированное многоголовое внимание, Трансформаторы, BERT и GPT В предыдущем рассказе я объяснил, что такое механизм внимания, а также..

Расставание с локальным хранилищем
Что такое локальное хранилище Локальное хранилище — это механизм, который позволяет веб-приложениям хранить данные на стороне клиента. Это часть API веб-хранилища, которое также включает в себя..

CycleGAN: как машинное обучение обучает непарному преобразованию изображения в изображение
Недавно я прочитал статью CycleGAN ( ссылка ), которая показалась мне очень интересной, потому что модели CycleGAN обладают невероятной способностью точно преобразовывать изображения во что-то, чем..

«Изучение передовых технологий: подробный обзор последних инноваций в области технологий…
Технологии постоянно развиваются, и последние инновации в технологической отрасли могут изменить наш образ жизни и работы так, как мы никогда не считали возможным. В этой статье подробно..