【问题标题】:Laravel 7 : trying to get the name instead of idLaravel 7:尝试获取名称而不是 id
【发布时间】:2021-01-12 14:49:02
【问题描述】:

我正在尝试根据他们的关系获取客户名称、地址等,但是当我尝试获取示例名称时,我收到错误 Trying to get property of 'name' of a non-object .

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Client;

class Evaluation extends Model
{
    protected $table = 'evaluations';
    protected $fillable = [
        'expert',
    ];

    public function client() {
        return $this->belongsTo(Client::class);
    }
}

控制器


   public function index()
 
   {   
       $evaluations = Evaluation::with('client')->get();

       $users= auth()->user();
       
       return view('evaluation.index', ['evaluations' => $evaluations]);
   }

查看

    @if (count($evaluations) < 1)
                                  <h1>Nici o evaluare nu a fost gasita.</h1>
                              @else
                                  @foreach ($evaluations as $evaluation)
                                       <tr>
                                          <td class="pl-1">{{$evaluation->id}}</td>
                                          <td class="pl-1">{{$evaluation->expert}}</td>
                                          <td class="pl-1">{{$evaluation->gram1}}</td>
                                          <td class="pl-1">{{$evaluation->client_id}}</td>    
                                          @php
                                               dd($evaluation->client_id->nume) 
                                          @endphp
                                         
                                          <td> <a href="{{ url('evaluation/print/'. $evaluation->id) }}">Printeaza</a></td>                                               
                                    </tr>
                                  @endforeach
                              
                              @endif
                                  

我还必须提到,在我的表中是 nume 而不是 name 它不是英文项目。

【问题讨论】:

  • 在您的刀片评论中或删除dd($evaluation-&gt;client_id-&gt;nume) 并更改为{{$evaluation-&gt;client-&gt;nume}}
  • Client 表是否有对应于Evaluation 表的client_id 的字段id
  • 我认为,如果您的外键中的evaluation_id,您只需要提及外键return $this-&gt;belongsTo(Client::class, evaluation_id);,但可能您有不同的。所以你需要提到
  • 我在我的 create_evaluations_table 中创建了一列“$table->integer('client_id);”因为我尝试过这种“ $table->bigInteger('client_id')->unsigned()->index; $table->foreign('client_id') ->references('id') ->on(' clients') ->onDelete('cascade'); 但它给我一个错误“150 外键约束的格式不正确
  • Encang Cutbray 这与它无关,我只是把它扔出去看看它会返回给我什么

标签: php laravel model controller relationship


【解决方案1】:

已解决,关系和一切都很好,我需要做的就是创建一个隐藏的输入以获取 id,并将 Id 添加到客户端模型上的受保护 $fillable 上而不是评估模型上。这是有效的,在视图中你必须像 {{$evaluation->client->nume}} 一样调用它,“->client->” = 是你调用的关系。我什至解决了外键问题,在我的 create_evaluations_table 中,client_id 列是 bigInteger,而在我的 create_clients_table 中,我想关联的客户端的 id 是整数。如果您遇到此错误,您需要做的就是使它们相同,就像您要关联的表中的 id 是整数一样,您还需要将整数保存在那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 2021-09-10
    • 2021-08-26
    • 2020-11-12
    • 2018-01-16
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多