代码之家  ›  专栏  ›  技术社区  ›  Farid Nubaili

Laravel 8在同一模型之间建立2个关系

  •  0
  • Farid Nubaili  · 技术社区  · 2 年前

    这是我在文件模型上的关系方法:

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

    This is my model table

    这是我的模型迁移代码

    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) }}
    

    This is my page view look like after executing code above

    更改此行后:

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

    致:

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

    我得到了以下错误:

    错误例外 正在尝试获取非对象的属性“name”

    1 回复  |  直到 2 年前
        1
  •  0
  •   Ray Dabbah    2 年前

    这似乎是第一次 $file 在你的数组中有 modify 关系设置,但有一个后续的 $file 这太不对劲了。要么执行空检查,要么确保始终设置了关系。