Laravel 8 создает 2 отношения между одной и той же моделью

Итак, это мой метод отношения к файловой модели:

public function User()
{
    return $this->belongsTo(
        User::class,
        'user_id',
        'id'
    );
}

public function modify()
{
    return $this->belongsTo(
        User::class,
        'update_id',
        'id'
    );
}

Это моя модель стола

Это мой код миграции модели

public function up()
{
    Schema::create('files', function (Blueprint $table) {
        $table->id();
        $table->foreignId('user_id')->constrained()->cascadeOnUpdate()->cascadeOnDelete();
        $table->foreignId('update_id')->nullable()->references('id')->on('users');
        $table->foreignId('division_id')->constrained()->cascadeOnUpdate();
        $table->string('title');
        $table->string('slug')->unique();
        $table->text('details');
        $table->timestamp('published_at')->nullable();
        $table->timestamps();
    });
}

Это мой код просмотра:

@foreach ($files as $key=>$file)    
          <tr>
            <td>{{ $files->firstItem() + $key }}</td>
            <td>{{ $file->title }}</td>
            <td><a href = "{{ route('Files.index', ['division'=>$file->division->slug, 'byUser'=>$byUser]) }}">{{ $file->division->name }}</a></td>
            <td>
                @if (auth()->user()->id == 1)
                    <a href = "{{ route('Files.index', ['division'=>$division, 'byUser'=>$file->user->username]) }}">{{ $file->user->name }}</a>
                @else
                    {{ $file->user->name }}
                @endif
            </td>
            <td>{{ $file->created_at }}</td>
            <td>
                {{-- @foreach ($file->modify as $update) --}}
                    {{ dd($file->modify->name) }}

Это мой вид страницы после выполнения кода выше

после изменения этой строки:

{{ dd($file->modify->name) }}

к:

{{ ($file->modify->name) }}

я получил следующую ошибку:

ErrorException Попытка получить имя свойства не-объекта

Пожалуйста, используйте текст, а не изображения/ссылки, для текста, включая таблицы и ERD. Перефразируйте или процитируйте другой текст. Дайте только то, что вам нужно, и свяжите это со своей проблемой. Используйте изображения только для того, что не может быть выражено в виде текста или для дополнения текста. Включите легенду / ключ и объяснение с изображением. Как спроситьЦентр помощи

philipxy 24.03.2022 06:22
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel
Laravel поставляется с мощной функцией под названием "Eloquent Accessors and Mutators".
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
1
1
14
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Может показаться, что первый $file в вашем массиве имеет набор отношений modify, но в последующем $file его нет. Либо выполните нулевую проверку, либо убедитесь, что связь всегда установлена.

спасибо за совет, теперь я могу назначить NULL, в представлении я проверяю, истинно ли отношение, используя @if ($file->modify)

Farid Nubaili 24.03.2022 05:23

Другие вопросы по теме