ErrorException 尝试在 null 上读取 属性 "name"(视图:

ErrorException Attempt to read property "name" on null (View:

我有 2 个指向同一个用户模型的关系:operador() 和 profesional()。

class Cita extends Model
{

    public function paciente(){
        
        return $this->belongsTo('\App\Models\Paciente');
        
    }
    
    public function profesional(){
        
        return $this->belongsTo('\App\Models\User');
        
    }

    public function operador(){
        
        return $this->belongsTo('\App\Models\User');
        
    }
    
}

在视图中我这样称呼它们:

                        @foreach ($comisiones as $comision)
                            <tr>

                            <td>{{ $comision->paciente->name }}</td>
                            
                            <td>{{ $comision->profesional->name }}</td>
                            <td>{{ $comision->operador->name }}</td>
                            
                            <td>{{ number_format($comision->total, 0, '.', '.') }}</td>
                            <td>{{ $comision->estado }}</td>
                            </tr>
                        @endforeach

程序在尝试调用 $commision->operador->name 时崩溃了。如果我把它留作评论,它就可以毫无问题地工作。但是当我同时拥有 2 个关系时它会给我一个错误。

我可以有 2 个关系指向同一个模型吗?如果没有,我还有什么选择?谢谢

当你写:

public function operador(){
    
    return $this->belongsTo('\App\Models\User');
    
}

Laravel 期望 The Migration (The table citas) 有一个名为 operador_id 的列。 所以是的您可以与同一个模型建立多个关系。

因为您使用的是 belongTo 关系,这意味着 User 是父模型,ProfessionalOperador 是子模型。

因此,预计 Professional 的 table 有一个名为 user_id 的列,Operador[ 也是如此=27=] table,它应该有 user_id 列。

有了这个关系就可以正常工作了。

是的,您可以有 2 个关系指向同一个模型。