【问题标题】:Trying to get property of non-object - name试图获取非对象的属性 - 名称
【发布时间】:2021-09-03 15:59:08
【问题描述】:

我正在尝试打印用户名,但它给了我错误

试图获取非对象的属性

型号

用户

<?php

namespace App\Models;
use App\Models\Registro;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use HasFactory, 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',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
    public function registros(){
      
       
         return $this->belongsTo('\App\Models\Registro', 'user_id');
    }
}

注册商

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use \App\Models\User;

class Registro extends Model
{
    use HasFactory;

    public function user(){
        return $this->hasMany('\App\Models\User');

    }
   
}

数据库:

在blade.php中:

  {{$registro->user_id->name}}  

也许我在人际关系方面做错了什么,但我无法自己解决

<tbody class="list">
            @foreach($registros as $registro)
              <tr>
                <th scope="row">
                  <div class="media align-items-center">
                    <a href="#" class="avatar rounded-circle mr-3">
                      <img alt="Image placeholder" src="../../assets/img/theme/bootstrap.jpg">
                    </a>
                    <div class="media-body">
                      <span class="name mb-0 text-sm">{{$registro->user_id->name}}</span>
                    </div>
                  </div>
                </th>
            
              </tr>
             @endforeach
            </tbody>

尝试改变关系,但它不起作用 不允许我打印 user_id 的名称,请帮助

【问题讨论】:

    标签: laravel laravel-5 eloquent laravel-8


    【解决方案1】:

    您错误地访问了用户详细信息。应该是

    {{$registro->user->name}}
    

    这里userrelationship 名称,在Registro 模型中定义

    【讨论】:

      【解决方案2】:

      你的关系是 hasMany 用户,所以当你访问它时你会得到一个集合。这样,您需要循环该集合以获得所需的用户模型

      【讨论】:

        猜你喜欢
        • 2019-05-23
        • 2019-07-11
        • 2019-12-13
        • 1970-01-01
        • 2021-06-04
        • 2020-01-23
        • 2020-09-28
        • 1970-01-01
        • 2021-06-05
        相关资源
        最近更新 更多